diff --git a/System/OsString/Common.hs b/System/OsString/Common.hs
--- a/System/OsString/Common.hs
+++ b/System/OsString/Common.hs
@@ -34,7 +34,13 @@
   , encodeWith
   , encodeFS
   , encodeLE
+#ifdef WINDOWS
+  , fromString
+#endif
   , fromBytes
+#ifndef WINDOWS
+  , fromBytestring
+#endif
   , pstr
   , singleton
   , empty
@@ -289,6 +295,21 @@
 encodeLE = fmap PosixString . encodeWithBasePosix'
 #endif
 
+#ifdef WINDOWS
+-- | Like 'encodeLE but not in IO.
+--
+-- 'encodeLE' was designed to have a symmetric type signature
+-- on unix and windows, but morally the function has no IO effects on windows,
+-- so we provide this variant without breaking existing API.
+--
+-- On windows, 'encodeLE' is equivalent to 'encodeFS'.
+--
+-- This function does not exist on unix.
+--
+-- @since 2.0.6
+fromString :: String -> WindowsString
+fromString = unsafePerformIO . fmap WindowsString . encodeWithBaseWindows
+#endif
 
 #ifdef WINDOWS_DOC
 -- | Partial unicode friendly decoding.
@@ -403,6 +424,20 @@
   in either throwM (const . pure $ ws) $ decodeWith ucs2le ws
 #else
 fromBytes = pure . PosixString . BSP.toShort
+#endif
+
+#ifndef WINDOWS
+-- | Like 'fromBytes', but not in IO.
+--
+-- 'fromBytes' was designed to have a symmetric type signature
+-- on unix and windows, but morally the function has no IO effects on unix,
+-- so we provide this variant without breaking existing API.
+--
+-- This function does not exist on windows.
+--
+-- @since 2.0.6
+fromBytestring :: ByteString -> PosixString
+fromBytestring = PosixString . BSP.toShort
 #endif
 
 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,10 @@
 # Changelog for [`os-string` package](http://hackage.haskell.org/package/os-string)
 
+## 2.0.6 *Jun 2024*
+
+* add `fromString` on windows
+* add `fromBytestring` on unix
+
 ## 2.0.5 *Jun 2024*
 
 * Add `decodeLE`/`encodeLE` and deprecate `decodeFS`/`encodeFS` (pointing users to `System.OsPath` instead), fixes [#19](https://github.com/haskell/os-string/issues/19)
diff --git a/os-string.cabal b/os-string.cabal
--- a/os-string.cabal
+++ b/os-string.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               os-string
-version:            2.0.5
+version:            2.0.6
 
 -- NOTE: Don't forget to update ./changelog.md
 license:            BSD-3-Clause
