diff --git a/benchmark/benchmark.hs b/benchmark/benchmark.hs
--- a/benchmark/benchmark.hs
+++ b/benchmark/benchmark.hs
@@ -8,9 +8,6 @@
 import Commonmark.Extensions
 import qualified Data.Text as T
 import qualified Data.Text.IO as TIO
-#if !MIN_VERSION_base(4,11,0)
-import Data.Monoid
-#endif
 
 main :: IO ()
 main = do
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,10 @@
 # Changelog for commonmark-extensions
 
+## 0.2.3
+
+- Allow bare word attribute in fenced_divs (#84).  This follows a similar
+  change in pandoc (jgm/pandoc#7242).
+
 ## 0.2.2.1
 
 - Fix commonmark-extensions to build with GHC 9.2 (#81, Joseph C. Sible).
diff --git a/commonmark-extensions.cabal b/commonmark-extensions.cabal
--- a/commonmark-extensions.cabal
+++ b/commonmark-extensions.cabal
@@ -1,5 +1,5 @@
 name:           commonmark-extensions
-version:        0.2.2.1
+version:        0.2.3
 synopsis:       Pure Haskell commonmark parser.
 description:
    This library provides some useful extensions to core commonmark
diff --git a/src/Commonmark/Extensions.hs b/src/Commonmark/Extensions.hs
--- a/src/Commonmark/Extensions.hs
+++ b/src/Commonmark/Extensions.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {- |
 
 Syntax extensions for the commonmark library.
@@ -64,9 +63,6 @@
 import           Commonmark.Extensions.RebaseRelativePaths
 import           Commonmark
 import           Data.Typeable
-#if !MIN_VERSION_base(4,11,0)
-import           Data.Monoid ((<>))
-#endif
 
 -- | Standard extensions for GitHub-flavored Markdown.
 gfmExtensions :: (Monad m, Typeable m, Typeable il, Typeable bl,
diff --git a/src/Commonmark/Extensions/Attributes.hs b/src/Commonmark/Extensions/Attributes.hs
--- a/src/Commonmark/Extensions/Attributes.hs
+++ b/src/Commonmark/Extensions/Attributes.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE UndecidableInstances #-}
@@ -30,9 +29,6 @@
 import Data.Tree
 import Control.Monad (mzero, guard, void)
 import Text.Parsec
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup
-#endif
 
 class HasDiv bl where
   div_ :: bl -> bl
@@ -53,7 +49,7 @@
 fencedDivBlockSpec :: (Monad m, IsBlock il bl, HasDiv bl)
                    => BlockSpec m il bl
 fencedDivBlockSpec = BlockSpec
-     { blockType           = "FencedDiv"
+    { blockType           = "FencedDiv"
      , blockStart          = try $ do
              prepos <- getPosition
              nonindentSpaces
@@ -63,7 +59,10 @@
              let fencelength = length colons
              guard $ fencelength >= 3
              skipWhile (hasType Spaces)
-             attrs <- pAttributes
+             attrs <- pAttributes <|>
+                      (do bareWordToks <- many1
+                           (satisfyWord (const True) <|> anySymbol)
+                          return [("class", untokenize bareWordToks)])
              skipWhile (hasType Spaces)
              lookAhead $ void lineEnd <|> eof
              addNodeToStack $
diff --git a/src/Commonmark/Extensions/AutoIdentifiers.hs b/src/Commonmark/Extensions/AutoIdentifiers.hs
--- a/src/Commonmark/Extensions/AutoIdentifiers.hs
+++ b/src/Commonmark/Extensions/AutoIdentifiers.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE UndecidableInstances #-}
@@ -18,9 +17,6 @@
 import qualified Data.Map as M
 import qualified Data.Text as T
 import Text.Parsec
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup
-#endif
 
 autoIdentifiersSpec :: (Monad m, IsBlock il bl, IsInline il, ToPlainText il)
                     => SyntaxSpec m il bl
diff --git a/src/Commonmark/Extensions/Autolink.hs b/src/Commonmark/Extensions/Autolink.hs
--- a/src/Commonmark/Extensions/Autolink.hs
+++ b/src/Commonmark/Extensions/Autolink.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE OverloadedStrings #-}
 module Commonmark.Extensions.Autolink
@@ -12,9 +11,6 @@
 import Control.Monad (guard, void)
 import Text.Parsec
 import Data.Text (Text)
-#if !MIN_VERSION_base(4,11,0)
-import Data.Monoid
-#endif
 
 autolinkSpec :: (Monad m, IsBlock il bl, IsInline il)
              => SyntaxSpec m il bl
diff --git a/src/Commonmark/Extensions/DefinitionList.hs b/src/Commonmark/Extensions/DefinitionList.hs
--- a/src/Commonmark/Extensions/DefinitionList.hs
+++ b/src/Commonmark/Extensions/DefinitionList.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE TupleSections #-}
 {-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE UndecidableInstances #-}
@@ -17,10 +16,6 @@
 import Commonmark.TokParsers
 import Commonmark.Html
 import Control.Monad (mzero)
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup (Semigroup)
-import Data.Monoid
-#endif
 import Data.Dynamic
 import Data.Tree
 import Text.Parsec
diff --git a/src/Commonmark/Extensions/Emoji.hs b/src/Commonmark/Extensions/Emoji.hs
--- a/src/Commonmark/Extensions/Emoji.hs
+++ b/src/Commonmark/Extensions/Emoji.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE OverloadedStrings #-}
 module Commonmark.Extensions.Emoji
diff --git a/src/Commonmark/Extensions/FancyList.hs b/src/Commonmark/Extensions/FancyList.hs
--- a/src/Commonmark/Extensions/FancyList.hs
+++ b/src/Commonmark/Extensions/FancyList.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE UndecidableInstances #-}
diff --git a/src/Commonmark/Extensions/Footnote.hs b/src/Commonmark/Extensions/Footnote.hs
--- a/src/Commonmark/Extensions/Footnote.hs
+++ b/src/Commonmark/Extensions/Footnote.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
@@ -23,10 +22,6 @@
 import Control.Monad (mzero)
 import Data.List
 import Data.Maybe (fromMaybe, mapMaybe)
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup (Semigroup)
-import Data.Monoid
-#endif
 import Data.Dynamic
 import Data.Tree
 import Text.Parsec
diff --git a/src/Commonmark/Extensions/ImplicitHeadingReferences.hs b/src/Commonmark/Extensions/ImplicitHeadingReferences.hs
--- a/src/Commonmark/Extensions/ImplicitHeadingReferences.hs
+++ b/src/Commonmark/Extensions/ImplicitHeadingReferences.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE UndecidableInstances #-}
@@ -19,9 +18,6 @@
 import Control.Monad (unless)
 import Data.Maybe (fromMaybe)
 import Text.Parsec
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup
-#endif
 
 implicitHeadingReferencesSpec
          :: (Monad m, IsBlock il bl, IsInline il)
diff --git a/src/Commonmark/Extensions/Math.hs b/src/Commonmark/Extensions/Math.hs
--- a/src/Commonmark/Extensions/Math.hs
+++ b/src/Commonmark/Extensions/Math.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE OverloadedStrings #-}
 module Commonmark.Extensions.Math
@@ -14,9 +13,6 @@
 import Commonmark.Html
 import Text.Parsec
 import Data.Text (Text)
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup (Semigroup(..))
-#endif
 
 mathSpec :: (Monad m, IsBlock il bl, IsInline il, HasMath il)
          => SyntaxSpec m il bl
diff --git a/src/Commonmark/Extensions/PipeTable.hs b/src/Commonmark/Extensions/PipeTable.hs
--- a/src/Commonmark/Extensions/PipeTable.hs
+++ b/src/Commonmark/Extensions/PipeTable.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP                   #-}
 {-# LANGUAGE IncoherentInstances   #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE FlexibleContexts      #-}
@@ -25,9 +24,6 @@
 import Data.Dynamic
 import Data.Tree
 import Data.Data
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup (Semigroup(..))
-#endif
 
 data ColAlignment = LeftAlignedCol
                   | CenterAlignedCol
diff --git a/src/Commonmark/Extensions/RebaseRelativePaths.hs b/src/Commonmark/Extensions/RebaseRelativePaths.hs
--- a/src/Commonmark/Extensions/RebaseRelativePaths.hs
+++ b/src/Commonmark/Extensions/RebaseRelativePaths.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE OverloadedStrings #-}
@@ -18,9 +17,6 @@
 import qualified System.FilePath.Posix as Posix
 import Network.URI (URI (uriScheme), parseURI)
 import qualified Data.Set as Set
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup (Semigroup(..))
-#endif
 
 rebaseRelativePathsSpec
   :: forall m bl il . (Monad m , IsInline il , IsBlock il bl)
diff --git a/src/Commonmark/Extensions/Smart.hs b/src/Commonmark/Extensions/Smart.hs
--- a/src/Commonmark/Extensions/Smart.hs
+++ b/src/Commonmark/Extensions/Smart.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP               #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE FlexibleInstances    #-}
 {-# LANGUAGE FlexibleContexts     #-}
@@ -15,10 +14,6 @@
 import Commonmark.SourceMap
 import Commonmark.TokParsers (symbol)
 import Text.Parsec
-#if !MIN_VERSION_base(4,11,0)
-import Data.Monoid (Monoid)
-import Data.Semigroup (Semigroup, (<>))
-#endif
 
 class IsInline il => HasQuoted il where
   singleQuoted :: il -> il
diff --git a/src/Commonmark/Extensions/TaskList.hs b/src/Commonmark/Extensions/TaskList.hs
--- a/src/Commonmark/Extensions/TaskList.hs
+++ b/src/Commonmark/Extensions/TaskList.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE TupleSections #-}
 {-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE UndecidableInstances #-}
@@ -19,10 +18,6 @@
 import Commonmark.TokParsers
 import Commonmark.Html
 import Control.Monad (mzero)
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup (Semigroup)
-import Data.Monoid ((<>))
-#endif
 import Control.Monad (when, guard)
 import Data.List (sort)
 import Data.Dynamic
diff --git a/src/Commonmark/Extensions/Wikilinks.hs b/src/Commonmark/Extensions/Wikilinks.hs
--- a/src/Commonmark/Extensions/Wikilinks.hs
+++ b/src/Commonmark/Extensions/Wikilinks.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE UndecidableInstances #-}
@@ -17,9 +16,6 @@
 import Commonmark.TokParsers
 import Commonmark.Html
 import Text.Parsec
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup hiding (option)
-#endif
 import Data.Text (Text, strip)
 
 class HasWikilinks il where
diff --git a/test/fenced_divs.md b/test/fenced_divs.md
--- a/test/fenced_divs.md
+++ b/test/fenced_divs.md
@@ -119,3 +119,16 @@
 </blockquote>
 ````````````````````````````````
 
+Instead of a normal attribute specifier in curly braces,
+a single bare word may be used; it will be treated as a
+"class" attribute:
+
+```````````````````````````````` example
+::: c_d
+Hi
+:::
+.
+<div class="c_d">
+<p>Hi</p>
+</div>
+````````````````````````````````
diff --git a/test/test-commonmark-extensions.hs b/test/test-commonmark-extensions.hs
--- a/test/test-commonmark-extensions.hs
+++ b/test/test-commonmark-extensions.hs
@@ -17,9 +17,6 @@
 import           Test.Tasty.HUnit
 import           Text.Parsec
 import           Text.Parsec.Pos
-#if !MIN_VERSION_base(4,11,0)
-import           Data.Semigroup
-#endif
 
 readTextFile :: FilePath -> IO Text
 readTextFile fp = do
