diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for unliftio
 
+## 0.2.20
+
+* Add lifted `System.IO.openFile` (https://github.com/fpco/unliftio/pull/88)
+
 ## 0.2.19
 
 * Add `Eq` instance for `StringException` (https://github.com/fpco/unliftio/pull/83)
diff --git a/src/UnliftIO/IO.hs b/src/UnliftIO/IO.hs
--- a/src/UnliftIO/IO.hs
+++ b/src/UnliftIO/IO.hs
@@ -9,6 +9,7 @@
   , IO.stderr
   , withFile
   , withBinaryFile
+  , openFile
   , hClose
   , hFlush
   , hFileSize
@@ -50,6 +51,12 @@
 -- @since 0.1.0.0
 withBinaryFile :: MonadUnliftIO m => FilePath -> IOMode -> (Handle -> m a) -> m a
 withBinaryFile fp mode inner = withRunInIO $ \run -> IO.withBinaryFile fp mode $ run . inner
+
+-- | Lifted version of 'IO.openFile'
+--
+-- @since 0.2.20
+openFile :: MonadIO m => FilePath -> IOMode -> m Handle
+openFile fp = liftIO . IO.openFile fp
 
 -- | Lifted version of 'IO.hClose'
 --
diff --git a/unliftio.cabal b/unliftio.cabal
--- a/unliftio.cabal
+++ b/unliftio.cabal
@@ -3,11 +3,9 @@
 -- This file has been generated from package.yaml by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: 58a862786103e0ea7ccdb111f5dc9c0088d8bdc74476f700df5b16ee6dc36a02
 
 name:           unliftio
-version:        0.2.19
+version:        0.2.20
 synopsis:       The MonadUnliftIO typeclass for unlifting monads to IO (batteries included)
 description:    Please see the documentation and README at <https://www.stackage.org/package/unliftio>
 category:       Control
