diff --git a/README b/README
index ecf41cb3a..d91d1f702 100644
--- a/README
+++ b/README
@@ -870,7 +870,8 @@ identifier. This identifier is based on the text of the header. To
 derive the identifier from the header text,
 
   - Remove all formatting, links, etc.
-  - Remove all punctuation, except underscores and hyphens.
+  - Remove all punctuation, except underscores, hyphens, periods,
+    and tildes.
   - Replace all spaces and newlines with hyphens.
   - Convert all alphabetic characters to lowercase.
   - Remove everything up to the first letter (identifiers may
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
index 73b5740d1..13f4ec3dc 100644
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -893,7 +893,7 @@ inlineListToIdentifier' [] = ""
 inlineListToIdentifier' (x:xs) =
   xAsText ++ inlineListToIdentifier' xs
   where xAsText = case x of
-          Str s          -> filter (\c -> c `elem` "_-" || not (isPunctuation c)) $
+          Str s          -> filter (\c -> c `elem` "_-.~" || not (isPunctuation c)) $
                             intercalate "-" $ words $ map toLower s
           Emph lst       -> inlineListToIdentifier' lst
           Strikeout lst  -> inlineListToIdentifier' lst