diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Revision history for derive-storable
 
+## 0.3.1.0  -- 2021-04-13
+
+* Added a non-internal getFilling helper [thanks to dpwiz](https://github.com/mkloczko/derive-storable/pull/8).
+
+
 ## 0.3.0.0  -- 2020-03-01
 
 * Removed instances module. A breaking change therefore bump to 0.3.
diff --git a/derive-storable.cabal b/derive-storable.cabal
--- a/derive-storable.cabal
+++ b/derive-storable.cabal
@@ -1,7 +1,7 @@
 name:                derive-storable
 
-version:             0.3.0.0
-synopsis:            Derive Storable instances with GHC.Generics.           
+version:             0.3.1.0
+synopsis:            Derive Storable instances with GHC.Generics.
 
 description:         Derive Storable instances with GHC.Generics. The derived Storable instances have the same alignment as C structs.
 
@@ -20,7 +20,7 @@
 extra-source-files:  ChangeLog.md README.md
 
 cabal-version:       >=1.10
-tested-with:         GHC==8.0.2, GHC==8.2.2, GHC==8.4.2, GHC==8.6.4, GHC==8.8.1
+tested-with:         GHC==8.2.2, GHC==8.4.2, GHC==8.6.4, GHC==8.8.1, GHC==8.10.4, GHC==9.0.1, GHC==9.2.1
 
 Flag sumtypes
   Description:   Enable support for non-recursive sum types.
diff --git a/src/Foreign/Storable/Generic.hs b/src/Foreign/Storable/Generic.hs
--- a/src/Foreign/Storable/Generic.hs
+++ b/src/Foreign/Storable/Generic.hs
@@ -17,9 +17,30 @@
 {-#LANGUAGE UndecidableInstances #-}
 
 
-module Foreign.Storable.Generic (GStorable (..), Storable(..)) where
+module Foreign.Storable.Generic (GStorable (..), Storable(..), getFilling) where
 
 
 
 import Foreign.Storable (Storable(..))
-import Foreign.Storable.Generic.Internal (GStorable (..))
+import GHC.Generics
+
+import Foreign.Storable.Generic.Internal (GStorable (..), GStorable' (..))
+import qualified Foreign.Storable.Generic.Tools as Tools
+
+{- | A helper to visualize layout.
+
+>>> data Foo = Foo Word8 Float Word32 Float deriving (Show, Generic, GStorable)
+>>> getFilling (Foo 0 0 0 0)
+[Size 1,Padding 3,Size 4,Size 4,Size 4]
+
+Nested structures are opaque to their parents:
+
+>>> data Bar = Bar Foo Double Double
+>>> getFilling $ Bar (Foo 0 0 0 0) 0 0
+[Size 16,Size 8,Size 8]
+-}
+getFilling :: (Generic a, GStorable a, GStorable' (Rep a)) => a -> [Tools.Filling]
+getFilling x = Tools.getFilling $ zip sizes aligns
+    where sizes  = glistSizeOf'    gx
+          aligns = glistAlignment' gx
+          gx = from x
