- π± Cross-Platform Support: Works seamlessly on Android, iOS, macOS, JVM (Windows, macOS, Linux), JS, and WASM
- π― Native Experience: Uses platform-native file pickers for the best user experience
- πͺΆ Lightweight: Minimal dependencies to keep your app fast and lean
- π Rich Integrations: Works with Compose Multiplatform, Coroutines, kotlinx-io, Coil, and more
- π Comprehensive File Operations: Pick files, save documents, access photos, manage directories
- π¨ Image Utilities: Built-in image compression and gallery integration
FileKit is trusted by developers building amazing cross-platform applications:
- Heron - KMP Bluesky client using FileKit for image preview when uploading images or videos
- Rush - Lyrics search app like Spotify
- Composables SVG to Compose - Web tool to convert SVG to Compose code in seconds
- Twine - A multiplatform RSS reader built using Kotlin and Compose
- Butler - AI Chat App supporting image uploads across iOS, Android, Desktop, and WasmJS
- PixelSafe - Free steganography tool for PNG images
- AndroidToolKit - Desktop tools applicable to Android development, supporting Windows, Mac and Linux
- Splital - Easily track and manage your shared expenses, quickly, simply, and hassle-free on Android and iOS
- Tracker - Manager for Bluesky - Track and manage your Bluesky followers, unfollowers, blockers, and post analytics β all in real time! On Android and iOS.
- Parrot Workout Tracker - The ultimate fitness log and exercise tracker to crush your goals on Android and iOS.
- Ashampoo Photo Organizer - Photo management software for organizing and searching large photo collections
Using FileKit in your project? Let us know!
Visit our documentation to learn more: https://filekit.mintlify.app
Migrate from FileKit 0.8 to 0.10 by following the migration guide.
// build.gradle.kts
dependencies {
implementation("io.github.vinceglb:filekit-core:$version")
implementation("io.github.vinceglb:filekit-dialogs:$version")
implementation("io.github.vinceglb:filekit-dialogs-compose:$version")
implementation("io.github.vinceglb:filekit-coil:$version")
}
Follow the installation guide to learn how to install and setup FileKit in your project.
// Pick a file
val file = FileKit.openFilePicker()
// Pick multiple files
val files = FileKit.openFilePicker(mode = FileKitMode.Multiple())
// Pick only images
val imageFile = FileKit.openFilePicker(type = FileKitType.Image)
// Pick a directory
val directory = FileKit.openDirectoryPicker()
// Save a file
val contentToSave = "Hello FileKit!"
val file = FileKit.openFileSaver(suggestedName = "document", extension = "txt")
file?.writeString(contentToSave)
// Work with files
val myFile = FileKit.filesDir / "document.pdf"
println(myFile.name)
println(myFile.size())
myFile.writeString("Hello, World!")
// Image operations
val compressedBytes = FileKit.compressImage(
bytes = imageFile.readBytes(),
quality = 80,
maxWidth = 1024,
maxHeight = 1024
)
See the quickstart guide to learn more about the different file operations and utilities available in FileKit.
FileKit is designed to be modular, allowing you to include only what you need:
- FileKit Core: Basic file operations and the
PlatformFile
abstraction - FileKit Dialogs: File pickers and save dialogs
- FileKit Dialogs Compose: Compose Multiplatform integration
- FileKit Coil: Integration with Coil for image loading
FileKit stands on the shoulders of giants. Special thanks to:
- compose-multiplatform-file-picker
- peekaboo
- Calf
- jnafilechooser
- swing-jnafilechooser
- nativefiledialog
- IFileDialogImp
- IntelliJ Community Foundation
- file_picker (flutter)
Made with β€οΈ by Vince