diff --git a/BasicPrelude.hs b/BasicPrelude.hs
--- a/BasicPrelude.hs
+++ b/BasicPrelude.hs
@@ -41,6 +41,9 @@
   , Text.unwords
   , textToString
   , ltextToString
+  , fpToText
+  , fpFromText
+  , fpToString
   , encodeUtf8
   , decodeUtf8
     -- ** Text operations (IO)
@@ -180,6 +183,23 @@
 
 ltextToString :: LText -> Prelude.String
 ltextToString = LText.unpack
+
+-- | This function assumes file paths are encoded in UTF8. If it
+-- cannot decode the 'FilePath', the result is just an approximation.
+--
+-- Since 0.3.13
+fpToText :: FilePath -> Text
+fpToText = either id id . FilePath.toText
+
+-- |
+-- Since 0.3.13
+fpFromText :: Text -> FilePath
+fpFromText = FilePath.fromText
+
+-- |
+-- Since 0.3.13
+fpToString :: FilePath -> Prelude.String
+fpToString = FilePath.encodeString
 
 -- | Note that this is /not/ the standard @Data.Text.Encoding.decodeUtf8@. That
 -- function will throw impure exceptions on any decoding errors. This function
diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.3.13
+
+* Export converters between FilePath <-> Text, String. [#56](https://github.com/snoyberg/basic-prelude/pull/56)
+
 ## 0.3.12
 
 * Add `fromShow` [#55](https://github.com/snoyberg/basic-prelude/pull/55)
diff --git a/basic-prelude.cabal b/basic-prelude.cabal
--- a/basic-prelude.cabal
+++ b/basic-prelude.cabal
@@ -1,5 +1,5 @@
 name:                basic-prelude
-version:             0.3.12
+version:             0.3.13
 synopsis:            An enhanced core prelude; a common foundation for alternate preludes.
 description:
     The premise of @basic-prelude@ is that there are a lot of very commonly desired features missing from the standard @Prelude@, such as commonly used operators (@\<$\>@ and @>=>@, for instance) and imports for common datatypes (e.g., @ByteString@ and @Vector@). At the same time, there are lots of other components which are more debatable, such as providing polymorphic versions of common functions.
