ZenConverter is a free, open source office suites project written in Kotlin and released under AGPL-3.0. It has 1,403 GitHub stars, 48 forks and 3 open issues, and was last pushed 4 days ago. On this registry it ranks #11 of 11 tracked projects in Office Suites, with 5 head-to-head comparisons available.

What is ZenConverter?

ZenConverter is a local-first file converter for Android, written in Kotlin with Jetpack Compose, for people who want to convert video, audio, and image files on their own phone instead of uploading them to someone else's server.

What it is

ZenConverter is a native Android application built with Kotlin and Jetpack Compose, using Material 3 and a foreground service pipeline for longer conversion jobs. File access goes through Android's Storage Access Framework, so the app works on files the user picks rather than scanning storage. It is licensed under AGPL-3.0, and its topic list places it among Android apps, FFmpeg-based conversion tooling, and local-processing utilities.

The concrete problem it solves is the shape of most Android converter apps. The README describes them as cluttered, ad-heavy, oddly priced, or built around uploading a file somewhere before any conversion happens. ZenConverter removes that: no ads, no accounts, no paywalls, no remote uploads, and the INTERNET permission is used only for manual update checks and on-demand model and font downloads. Supported routes are verified on a physical Android device, and their known limits are written down in a public support matrix at formats/support-matrix.md rather than hidden.

Key capabilities

  • FFmpeg true video and audio re-encoding for MP4, MKV, and MOV outputs, including MP4-to-MP4, with adjustable codec, bitrate, resolution, frame rate, audio settings, draggable quick trimming, multi-point splitting, and compression presets that fix the CRF, the video quality and size strategy, and the AAC audio bitrate; video merge concatenates multiple files with aspect-ratio normalization and audio stream handling.
  • Contact sheets exported as JPG or PNG over 3×3, 3×4, 4×4, or 5×5 sample grids, with an optional metadata header and timestamp badges.
  • Animated GIF export on a palette-based FFmpeg path that automatically takes at most the first 30 seconds, 30 fps, and 900 frames, with a default 480 px short-side cap plus 720 px and Original options.
  • Audio extraction and conversion to MP3, M4A, WAV, FLAC, WMA, and OPUS, all through FFmpeg true audio re-encoding, with bitrate, sample-rate, channel, and encoder checks wired in; OPUS resamples to standard sample rates.
  • Advanced processing: video reverse playback, fade, mirror, rotation, and frame fit or crop; audio reverse, non-model afftdn noise reduction, fade, volume and mute, and echo.
  • Image conversion across JPG, JPEG, JFIF, JPE, PNG, WEBP, GIF, HEIC, HEIF, and ICO inputs, with JPG, JFIF, PNG, WEBP, ICO, and PDF outputs; GIF can use its first frame or split frames into a folder.
  • Task queue with direct share and open import, gallery and folder batch import, mixed-file routing, per-file target selection, per-task progress and failures, cancellation, and output sharing.

Who uses it and how

  • Individual Android users who convert files on the device and want no account, no ad, and no upload step anywhere in the path.
  • People working with large videos, which the README treats as real use cases; these need adequate free storage, memory, and power, and the device must stay available while a long foreground conversion runs.
  • Batch workflows that start from the gallery or a folder, configure same-type batch options, route mixed file types, and choose targets per file.
  • Sharing workflows that begin in another app: direct share or open import, then output sharing and best-effort opening of the result or its location.
  • Multilingual users, with in-app language switching for English, Simplified Chinese, Traditional Chinese, and French, alongside Material You dynamic colors, dark mode, and an independent OLED black toggle.

Getting started

The provided README names no package, Docker image, or compose file; ZenConverter ships as a native Android app built with Kotlin and Jetpack Compose, and the listed project homepage is https://zenconverter.xlab.my. The support matrix at formats/support-matrix.md is the reference for which routes are Stable, Beta, or Experimental.

How it compares

No competing product is named in the facts provided, so ZenConverter stands alone in this registry. Its README frames it against desktop open-source converters, which it says are plentiful and good, and against Android converters that are cluttered, ad-heavy, oddly priced, or built around uploading a file first.

When to use it — and when not to

There is no database, object store, or SMTP service to operate, but the app leans on the phone: large conversions need free storage, memory, and power, and a running foreground job ties the device up. Users who need HEIC and HEIF handling independent of the device decoder, GIF export beyond the first 30 seconds, or reliable 2× frame interpolation across every chipset should not pick it — that route uses Tencent NCNN Vulkan with RIFE, performs on-demand model downloads with SHA-256 verification, and stays experimental because mobile GPU drivers and memory vary. Reverse playback also carries conservative safety limits, so it is not a general-purpose reverse tool.

project readme (upstream, from github) — read inline

ZenConverter

Private, local-first file conversion for Android.

English | 中文

Latest release GitHub stars GitHub downloads Last Commit Kotlin Jetpack Compose No ads License Google Play Downloads Featured|HelloGitHub

Get it on Google Play

ZenConverter is a local file converter for Android. Pick a file on your phone, convert it on your phone, and keep it off someone else's server.

The app is built with native Kotlin and Jetpack Compose. File access goes through Android's Storage Access Framework, and longer jobs run in a foreground service. The app deliberately stays narrow: supported routes are verified on a physical Android device, and their known limits are written down instead of hidden.

Note: very large media files still need adequate free storage, memory, and power. Keep the device available while a long foreground conversion is running.

Why Build It

Desktop users already have plenty of good open-source converters. Android feels rougher. Many converter apps are cluttered, ad-heavy, oddly priced, or built around uploading your file somewhere first.

ZenConverter is the local-first Android converter I wanted to use:

  • no network transfer for conversion work,
  • no ads, accounts, paywalls, or remote uploads,
  • INTERNET permission is only used for manual update checks and on-demand model/font downloads,
  • no extra permissions unless the app actually needs them,
  • large videos are treated as real use cases, even if that path is still rough,
  • the support list lives in the public support matrix.

Current Status

Stable routes have been verified on a physical Android device. Beta routes work within the stated compatibility limits.

Area Status Notes
Native Android shell Done Kotlin, Compose, Material 3, foreground service pipeline. Supports Material You dynamic colors, dark mode, an independent OLED black toggle, and in-app language switching (English, Simplified/Traditional Chinese, French).
Task queue and results Done Direct share/open import, gallery and folder batch import, same-type batch option configuration, mixed-file routing, per-file target selection, file basics, per-task progress and failures, compact before/after conversion details, cancellation, output sharing, and best-effort opening of the result or its location.
Video conversion & merge Done MP4 / MKV / MOV outputs use FFmpeg true video and audio re-encoding, including MP4-to-MP4. Video merge concatenates multiple video files with aspect-ratio normalization and audio stream handling. Codec, bitrate, resolution, frame rate, audio, draggable quick trimming & multi-point splitting, and advanced processing can be adjusted. Enabling a compression preset fixes the CRF, video quality/size strategy, and AAC audio bitrate.
Video overview contact sheet Done Generates video contact sheets with 3×3, 3×4, 4×4, or 5×5 sample grids, with an optional metadata header and timestamp badges, exported as JPG or PNG.
Video to animated GIF Done FFmpeg palette-based GIF export automatically uses at most the first 30 seconds, 30 fps, and 900 frames. The default short-side cap is 480 px, with 720 px and Original options.
Audio extraction and conversion Done Video audio extraction and MP3 / M4A / WAV / FLAC / WMA / OPUS targets all use FFmpeg true audio re-encoding. Applicable bitrate, sample-rate, channel, and encoder checks are wired. OPUS automatically resamples to standard sample rates.
Advanced audio/video processing Stable Video supports short reverse playback, fade, mirror, rotation, and frame fit/crop. Audio supports reverse playback, non-model afftdn noise reduction, fade, volume/mute, and echo. Reverse playback has conservative safety limits.
Video frame interpolation Experimental 2× deep-learning frame multiplication via Tencent NCNN Vulkan and RIFE. Supports on-demand model download with SHA-256 verification and adaptive downscaling for 1080p+ inputs. Currently experimental due to mobile GPU driver and memory variance across chipsets.
Image conversion Stable / Beta JPG / JPEG / JFIF / JPE, PNG, WEBP, GIF, HEIC / HEIF, and ICO inputs; JPG / JFIF / PNG / WEBP / ICO / PDF outputs. HEIC / HEIF remains device-decoder dependent. GIF can use its first frame or split frames into a folder. Metadata and animation timing are not copied.
Image super-resolution Stable Bilinear algorithmic upscaling (2×, 3×, 4×) and Real-ESRGAN 4× deep-learning AI models (compact general, high-quality, and anime) via Tencent NCNN with Vulkan GPU acceleration. Features on-demand model download with SHA-256 verification, tiled inference, and RAM-adaptive pixel budgets.
Metadata safety Stable A separate privacy tool can inspect images/videos (including JPG and HEIC/HEIF). JPG / JPEG / JFIF can be cleaned in place without re-encoding, with removed metadata backed up in app data for same-image restore.
PDF tools Stable Image/PDF conversion, PDF merge, PDF compression with presets (High Quality, Balanced, Small File), selectable-text export to TXT / lightweight MD, plus password-based PDF encryption and decryption. No OCR or password cracking is included.
Office conversion Beta DOCX / PPTX / XLSX can produce PDF, TXT, or lightweight MD locally. Chinese text renders with system CJK fonts or optional on-demand Noto CJK fonts, but layout fidelity is limited and source files are capped at 64 MiB.
Font conversion Stable Mutual conversion between TTF, OTF, WOFF, and WOFF2 formats. WOFF2 compression/decompression uses bundled native Google woff2 (arm64); WOFF 1.0 uses pure Kotlin zlib. Automatically matches font flavors (.ttf / .otf).
Subtitle & lyrics conversion Stable Mutual conversion between SRT, VTT, LRC, and ASS subtitle/lyrics files. LRC lyrics parsing and generation in pure Kotlin with multi-timestamp support, [offset:] time shifts, and GB18030/GBK Chinese fallback; SRT/VTT/ASS via FFmpeg.

Architecture

flowchart LR
    Pick["Add files"]
    Configure["Configure each task"]
    Queue["Ready queue"]
    Service["Foreground service"]
    Engine["FFmpeg / Native / Office / WOFF2 / NCNN"]
    Output["Save output"]

    Pick --> Configure --> Queue --> Service --> Engine --> Output

The UI does not do conversion work. Each task is routed to an engine based on the input, output, and selected mode:

  • Compatibility: FFmpeg true re-encode path for connected video/audio targets, GIF output, subtitles (SRT/VTT/ASS), and advanced processing.
  • Native: Android platform bitmap/PDF handling, PDFBox-Android (PDF merge/text/security), and pure-Kotlin engines (WOFF, LRC).
  • Office: Local first-pass Office rendering path for DOCX, PPTX, and XLSX.
  • Font / WOFF2: Native `goo

readme truncated — read the full docs on github

Frequently asked questions

Is ZenConverter free to use?

ZenConverter is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does ZenConverter do?

Local Android file converter built with Kotlin and Jetpack Compose. Convert files on device, with no ads, accounts, or upload-based fallback.

What is ZenConverter written in?

ZenConverter is primarily written in Kotlin. Its source is publicly available at https://github.com/Jasonzhu1207/ZenConverter, and it has 1,403 GitHub stars.