diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,15 @@
-# Changelog for safe-coloured-text
+# Changelog for safe-coloured-text-gen
+
+## [0.0.0.4] - 2026-04-12
+
+### Added
+
+* Golden file roundtrip tests for ANSI parsing
+* Golden test coverage for new Chunk styling fields
+
+### Fixed
+
+* NoBlinking golden file path was incorrectly labelled "no-underline"
 
 ## [0.0.0.2] - 2023-12-07
 
diff --git a/safe-coloured-text-gen.cabal b/safe-coloured-text-gen.cabal
--- a/safe-coloured-text-gen.cabal
+++ b/safe-coloured-text-gen.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.35.2.
+-- This file has been generated from package.yaml by hpack version 0.37.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           safe-coloured-text-gen
-version:        0.0.0.3
+version:        0.0.0.4
 description:    Generators for types in safe-coloured-text
 homepage:       https://github.com/NorfairKing/safe-coloured-text#readme
 bug-reports:    https://github.com/NorfairKing/safe-coloured-text/issues
@@ -47,16 +47,23 @@
     test_resources/chunk/8/dull-black-fg-bright-black-bg.dat
     test_resources/chunk/8/dull-white-fg-bright-yellow-bg.dat
     test_resources/chunk/8/dull-yellow-fg-dull-white-bg.dat
-    test_resources/chunk/8/italic-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat
+    test_resources/chunk/8/hd-no-ol-underline-slow-blinking-bright-blue-fg-dull-black-bg.dat
+    test_resources/chunk/8/it-st-no-rv-no-ol-non-bold-slow-blinking-bright-red-fg-no-bg.dat
+    test_resources/chunk/8/no-blinking-dull-blue-fg-dull-cyan-bg.dat
     test_resources/chunk/8/no-fg-bright-black-bg.dat
     test_resources/chunk/8/no-fg-bright-blue-bg.dat
     test_resources/chunk/8/no-fg-dull-green-bg.dat
     test_resources/chunk/8/no-fg-no-bg.dat
-    test_resources/chunk/8/no-underline-dull-blue-fg-dull-cyan-bg.dat
+    test_resources/chunk/8/no-hd-faint-rapid-blinking-dull-cyan-fg-bright-white-bg.dat
+    test_resources/chunk/8/no-it-no-st-no-hd-ol-bold-double-underline-dull-magenta-fg-dull-black-bg.dat
+    test_resources/chunk/8/no-ol-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat
+    test_resources/chunk/8/no-rv-no-hd-ol-double-underline-no-blinking-bright-black-fg-bright-red-bg.dat
+    test_resources/chunk/8/no-st-no-ol-bold-underline-rapid-blinking-dull-red-fg-dull-blue-bg.dat
     test_resources/chunk/8/no-underline-rapid-blinking-dull-red-fg-bright-blue-bg.dat
     test_resources/chunk/8/non-bold-double-underline-bright-magenta-fg-dull-blue-bg.dat
     test_resources/chunk/8/slow-blinking-dull-cyan-fg-bright-blue-bg.dat
-    test_resources/chunk/8/underline-no-underline-bright-black-fg-dull-black-bg.dat
+    test_resources/chunk/8/st-ol-faint-no-underline-bright-green-fg-dull-black-bg.dat
+    test_resources/chunk/8/underline-no-blinking-bright-black-fg-dull-black-bg.dat
     test_resources/chunk/8bit/0-fg-5-bg.dat
     test_resources/chunk/8bit/1-fg-5-bg.dat
     test_resources/chunk/8bit/126-fg-142-bg.dat
@@ -136,6 +143,7 @@
   type: exitcode-stdio-1.0
   main-is: Spec.hs
   other-modules:
+      Text.Colour.Chunk.ParsingRoundtripSpec
       Text.Colour.ChunkSpec
       Text.Colour.CodeSpec
       Text.ColourSpec
@@ -147,9 +155,13 @@
       sydtest-discover:sydtest-discover
   build-depends:
       base >=4.7 && <5
+    , bytestring
     , genvalidity-sydtest
+    , path
+    , path-io
     , safe-coloured-text
     , safe-coloured-text-gen
+    , safe-coloured-text-parsing
     , sydtest
     , text
   default-language: Haskell2010
diff --git a/test/Text/Colour/Chunk/ParsingRoundtripSpec.hs b/test/Text/Colour/Chunk/ParsingRoundtripSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/Text/Colour/Chunk/ParsingRoundtripSpec.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE QuasiQuotes #-}
+
+module Text.Colour.Chunk.ParsingRoundtripSpec (spec) where
+
+import Control.Monad
+import qualified Data.ByteString as SB
+import Data.List (sort)
+import qualified Data.Text as Text
+import qualified Data.Text.Encoding as TE
+import Path
+import Path.IO (listDirRecurRel, resolveDir')
+import Test.Syd
+import Text.Colour.Capabilities
+import Text.Colour.Chunk
+import Text.Colour.Chunk.Parsing
+
+spec :: Spec
+spec = do
+  resourceDir <- liftIO $ resolveDir' "test_resources"
+  let chunkDir = resourceDir </> [reldir|chunk|]
+  files <- liftIO $ sort . snd <$> listDirRecurRel chunkDir
+  describe "golden file roundtrip" $
+    forM_ files $ \file ->
+      it ("roundtrips " ++ fromRelFile file) $ do
+        bs <- SB.readFile (fromAbsFile (chunkDir </> file))
+        content <- case TE.decodeUtf8' bs of
+          Left err -> expectationFailure $ "Invalid UTF-8: " ++ show err
+          Right t -> pure t
+        let (_, parsed) = parseAnsiChunks (chunk Text.empty) content
+            reRendered = renderChunksText With24BitColours parsed
+        reRendered `shouldBe` content
diff --git a/test/Text/Colour/ChunkSpec.hs b/test/Text/Colour/ChunkSpec.hs
--- a/test/Text/Colour/ChunkSpec.hs
+++ b/test/Text/Colour/ChunkSpec.hs
@@ -40,13 +40,18 @@
                   pure $ Colour8 intensity terminalColour
             let mColour = Nothing : map Just colour
             chunkItalic <- Nothing : map Just [minBound .. maxBound]
+            chunkStrikethrough <- Nothing : map Just [minBound .. maxBound]
+            chunkSwapForegroundBackground <- Nothing : map Just [minBound .. maxBound]
+            chunkConcealed <- Nothing : map Just [minBound .. maxBound]
+            chunkOverlined <- Nothing : map Just [minBound .. maxBound]
             chunkConsoleIntensity <- Nothing : map Just [minBound .. maxBound]
             chunkUnderlining <- Nothing : map Just [minBound .. maxBound]
             chunkBlinking <- Nothing : map Just [minBound .. maxBound]
             chunkForeground <- mColour
             chunkBackground <- mColour
             let chunkText = T.pack string
-            let italicName i = if i then "non-italic" else "italic"
+            let boolName label b = if b then label else "non-" <> label
+                boolPath label b = if b then label else "no-" <> label
                 consoleIntensityName :: ConsoleIntensity -> String
                 consoleIntensityName = \case
                   BoldIntensity -> "bold"
@@ -61,12 +66,16 @@
                 blinkingName = \case
                   SlowBlinking -> "slow blinking"
                   RapidBlinking -> "rapid blinking"
-                  NoBlinking -> "no underline"
+                  NoBlinking -> "no blinking"
                 name =
                   unwords $
                     filter
                       (not . null)
-                      [ maybe "" italicName chunkItalic,
+                      [ maybe "" (boolName "italic") chunkItalic,
+                        maybe "" (boolName "strikethrough") chunkStrikethrough,
+                        maybe "" (boolName "reverse") chunkSwapForegroundBackground,
+                        maybe "" (boolName "concealed") chunkConcealed,
+                        maybe "" (boolName "overlined") chunkOverlined,
                         maybe "" consoleIntensityName chunkConsoleIntensity,
                         maybe "" underliningName chunkUnderlining,
                         maybe "" blinkingName chunkBlinking,
@@ -78,7 +87,6 @@
                         "background"
                       ]
 
-                italicPath i = if i then "non-italic" else "italic"
                 consoleIntensityPath :: ConsoleIntensity -> FilePath
                 consoleIntensityPath = \case
                   BoldIntensity -> "bold"
@@ -93,13 +101,17 @@
                 blinkingPath = \case
                   SlowBlinking -> "slow-blinking"
                   RapidBlinking -> "rapid-blinking"
-                  NoBlinking -> "no-underline"
+                  NoBlinking -> "no-blinking"
                 path =
                   intercalate
                     "-"
                     ( filter
                         (not . null)
-                        [ maybe "" italicPath chunkItalic,
+                        [ maybe "" (boolPath "it") chunkItalic,
+                          maybe "" (boolPath "st") chunkStrikethrough,
+                          maybe "" (boolPath "rv") chunkSwapForegroundBackground,
+                          maybe "" (boolPath "hd") chunkConcealed,
+                          maybe "" (boolPath "ol") chunkOverlined,
                           maybe "" consoleIntensityPath chunkConsoleIntensity,
                           maybe "" underliningPath chunkUnderlining,
                           maybe "" blinkingPath chunkBlinking,
@@ -121,6 +133,10 @@
             let colour = Colour8Bit <$> [minBound .. maxBound]
             let mColour = Nothing : map Just colour
             let chunkItalic = Nothing
+            let chunkStrikethrough = Nothing
+            let chunkSwapForegroundBackground = Nothing
+            let chunkConcealed = Nothing
+            let chunkOverlined = Nothing
             let chunkConsoleIntensity = Nothing
             let chunkUnderlining = Nothing
             let chunkBlinking = Nothing
@@ -159,6 +175,10 @@
                   pure $ Colour24Bit r g b
             let mColour = Nothing : map Just colour
             let chunkItalic = Nothing
+            let chunkStrikethrough = Nothing
+            let chunkSwapForegroundBackground = Nothing
+            let chunkConcealed = Nothing
+            let chunkOverlined = Nothing
             let chunkConsoleIntensity = Nothing
             let chunkUnderlining = Nothing
             let chunkBlinking = Nothing
diff --git a/test_resources/chunk/8/hd-no-ol-underline-slow-blinking-bright-blue-fg-dull-black-bg.dat b/test_resources/chunk/8/hd-no-ol-underline-slow-blinking-bright-blue-fg-dull-black-bg.dat
new file mode 100644
--- /dev/null
+++ b/test_resources/chunk/8/hd-no-ol-underline-slow-blinking-bright-blue-fg-dull-black-bg.dat
@@ -0,0 +1,1 @@
+[8;55;4;5;94;40mook[m
diff --git a/test_resources/chunk/8/it-st-no-rv-no-ol-non-bold-slow-blinking-bright-red-fg-no-bg.dat b/test_resources/chunk/8/it-st-no-rv-no-ol-non-bold-slow-blinking-bright-red-fg-no-bg.dat
new file mode 100644
--- /dev/null
+++ b/test_resources/chunk/8/it-st-no-rv-no-ol-non-bold-slow-blinking-bright-red-fg-no-bg.dat
@@ -0,0 +1,1 @@
+[3;9;27;55;5;22;91mook[m
diff --git a/test_resources/chunk/8/italic-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat b/test_resources/chunk/8/italic-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat
deleted file mode 100644
--- a/test_resources/chunk/8/italic-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat
+++ /dev/null
@@ -1,1 +0,0 @@
-[23;22;33;102mook[m
diff --git a/test_resources/chunk/8/no-blinking-dull-blue-fg-dull-cyan-bg.dat b/test_resources/chunk/8/no-blinking-dull-blue-fg-dull-cyan-bg.dat
new file mode 100644
--- /dev/null
+++ b/test_resources/chunk/8/no-blinking-dull-blue-fg-dull-cyan-bg.dat
@@ -0,0 +1,1 @@
+[25;34;46mook[m
diff --git a/test_resources/chunk/8/no-hd-faint-rapid-blinking-dull-cyan-fg-bright-white-bg.dat b/test_resources/chunk/8/no-hd-faint-rapid-blinking-dull-cyan-fg-bright-white-bg.dat
new file mode 100644
--- /dev/null
+++ b/test_resources/chunk/8/no-hd-faint-rapid-blinking-dull-cyan-fg-bright-white-bg.dat
@@ -0,0 +1,1 @@
+[28;6;2;36;107mook[m
diff --git a/test_resources/chunk/8/no-it-no-st-no-hd-ol-bold-double-underline-dull-magenta-fg-dull-black-bg.dat b/test_resources/chunk/8/no-it-no-st-no-hd-ol-bold-double-underline-dull-magenta-fg-dull-black-bg.dat
new file mode 100644
--- /dev/null
+++ b/test_resources/chunk/8/no-it-no-st-no-hd-ol-bold-double-underline-dull-magenta-fg-dull-black-bg.dat
@@ -0,0 +1,1 @@
+[23;29;28;53;21;1;35;40mook[m
diff --git a/test_resources/chunk/8/no-ol-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat b/test_resources/chunk/8/no-ol-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat
new file mode 100644
--- /dev/null
+++ b/test_resources/chunk/8/no-ol-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat
@@ -0,0 +1,1 @@
+[55;5;22;33;102mook[m
diff --git a/test_resources/chunk/8/no-rv-no-hd-ol-double-underline-no-blinking-bright-black-fg-bright-red-bg.dat b/test_resources/chunk/8/no-rv-no-hd-ol-double-underline-no-blinking-bright-black-fg-bright-red-bg.dat
new file mode 100644
--- /dev/null
+++ b/test_resources/chunk/8/no-rv-no-hd-ol-double-underline-no-blinking-bright-black-fg-bright-red-bg.dat
@@ -0,0 +1,1 @@
+[27;28;53;21;25;90;101mook[m
diff --git a/test_resources/chunk/8/no-st-no-ol-bold-underline-rapid-blinking-dull-red-fg-dull-blue-bg.dat b/test_resources/chunk/8/no-st-no-ol-bold-underline-rapid-blinking-dull-red-fg-dull-blue-bg.dat
new file mode 100644
--- /dev/null
+++ b/test_resources/chunk/8/no-st-no-ol-bold-underline-rapid-blinking-dull-red-fg-dull-blue-bg.dat
@@ -0,0 +1,1 @@
+[29;55;4;6;1;31;44mook[m
diff --git a/test_resources/chunk/8/no-underline-dull-blue-fg-dull-cyan-bg.dat b/test_resources/chunk/8/no-underline-dull-blue-fg-dull-cyan-bg.dat
deleted file mode 100644
--- a/test_resources/chunk/8/no-underline-dull-blue-fg-dull-cyan-bg.dat
+++ /dev/null
@@ -1,1 +0,0 @@
-[34;46mook[m
diff --git a/test_resources/chunk/8/no-underline-rapid-blinking-dull-red-fg-bright-blue-bg.dat b/test_resources/chunk/8/no-underline-rapid-blinking-dull-red-fg-bright-blue-bg.dat
--- a/test_resources/chunk/8/no-underline-rapid-blinking-dull-red-fg-bright-blue-bg.dat
+++ b/test_resources/chunk/8/no-underline-rapid-blinking-dull-red-fg-bright-blue-bg.dat
@@ -1,1 +1,1 @@
-[24;31;104mook[m
+[24;6;31;104mook[m
diff --git a/test_resources/chunk/8/slow-blinking-dull-cyan-fg-bright-blue-bg.dat b/test_resources/chunk/8/slow-blinking-dull-cyan-fg-bright-blue-bg.dat
--- a/test_resources/chunk/8/slow-blinking-dull-cyan-fg-bright-blue-bg.dat
+++ b/test_resources/chunk/8/slow-blinking-dull-cyan-fg-bright-blue-bg.dat
@@ -1,1 +1,1 @@
-[36;104mook[m
+[5;36;104mook[m
diff --git a/test_resources/chunk/8/st-ol-faint-no-underline-bright-green-fg-dull-black-bg.dat b/test_resources/chunk/8/st-ol-faint-no-underline-bright-green-fg-dull-black-bg.dat
new file mode 100644
--- /dev/null
+++ b/test_resources/chunk/8/st-ol-faint-no-underline-bright-green-fg-dull-black-bg.dat
@@ -0,0 +1,1 @@
+[9;53;24;2;92;40mook[m
diff --git a/test_resources/chunk/8/underline-no-blinking-bright-black-fg-dull-black-bg.dat b/test_resources/chunk/8/underline-no-blinking-bright-black-fg-dull-black-bg.dat
new file mode 100644
--- /dev/null
+++ b/test_resources/chunk/8/underline-no-blinking-bright-black-fg-dull-black-bg.dat
@@ -0,0 +1,1 @@
+[4;25;90;40mook[m
diff --git a/test_resources/chunk/8/underline-no-underline-bright-black-fg-dull-black-bg.dat b/test_resources/chunk/8/underline-no-underline-bright-black-fg-dull-black-bg.dat
deleted file mode 100644
--- a/test_resources/chunk/8/underline-no-underline-bright-black-fg-dull-black-bg.dat
+++ /dev/null
@@ -1,1 +0,0 @@
-[4;90;40mook[m
