Plans and billing

Pay for the minutes you convert

The browser form is free and always will be. Past it you pay for processing time — not seats, not formats, not the privilege of calling the API. Every limit quoted on this page is a setting you can look up.

  • No card for the free tier
  • Billed by the whole minute
  • Import and export never billed
Monthly Yearly Save ~20%
  • Free

    Convert in the browser, no account, no card.

    0

    forever

    No account required

    No account required

    • Every format the host has tools for
    • Up to 200 files per batch
    • 256 MiB per file, 1 GiB per URL import
    • Files removed 24 hours later, when the purge job next runs
    • Community support via the issue tracker

    Start converting

  • Credits

    Metered API access. Buy minutes, use them when you need them.

    29

    per 1,000 conversion minutes

    One-off pack, minutes valid 12 months

    Annual bundle, billed up front

    • Full REST API and job DAG
    • 256 MiB per upload, 1 GiB per URL import
    • 200 files per batch, 50 tasks per job
    • Signed webhooks with automatic retries
    • 24-hour file retention
    • Email support, two business days

    Buy credits

  • Self-hosted

    Run it on your own hardware. We support the deployment.

    399

    per month, support plan

    The software itself stays free

    Billed yearly, the software stays free

    • Docker image with the whole toolchain
    • Your limits: every cap is an FC_* variable
    • Your storage, your retention, your network
    • No conversion minutes — you own the CPU
    • Upgrade and hardening review each quarter
    • Named engineer, private channel

    Talk to us

Prices exclude VAT, GST and sales tax. A format only works if its tool is installed on the host — see what this deployment can convert.

What a conversion minute buys

Billing follows processing time, measured per task, rounded up to the whole minute with a one-minute floor. Fetching and delivering files is free — only the work in the middle counts.

  • Counted Processing tasks Converting, optimising, thumbnailing, watermarking, merging, archiving — anything that hands a file to ImageMagick, ffmpeg, LibreOffice or Ghostscript.
  • Free Import and export Pulling a file from a URL and staging the download afterwards. Transfer time is never billed, however slow the far end is.
  • Capped Runaway jobs A task still running after 15 minutes is treated as abandoned and re-queued. Every attempt that started is billed, including one that later failed or timed out — a re-queued task therefore bills more than once.

Worked examples Billed minutes

  1. 40 phone photos, HEIC to JPEG

    One job per batch, up to 50 tasks each. The floor is charged per task, not per job, so 40 images that each convert in under a second still bill 40 minutes — one apiece. Bulk image work is priced by file count, not by wall-clock. The S3 import that fed it costs nothing.

  2. A 40-minute 1080p screencast to MP4 and a GIF preview

    Transcoding runs faster than real time on a warm worker; the palette-optimised GIF adds a short second pass. About 14 minutes billed, delivered by webhook when the job finishes rather than by holding an HTTP request open.


Compare the plans

The defaults below are the ones shipped in lib/config.php, and on a self-hosted deployment every one of them is an environment variable. Note that the limits rows read the same across the hosted plans: each is a single global setting, so raising one raises it for everybody. What a plan actually buys is minutes and a support commitment.

Capabilities by plan Scroll sideways for more

Capabilities by plan
Capability Free Credits Business Self-hosted
Max file size FC_MAX_UPLOAD_BYTES — one global value 256 MiB (1 GiB by URL) 256 MiB (1 GiB by URL) Whatever you configure
Concurrency A shared worker pool, not a per-account limit Shared pool Shared pool As many workers as you run
REST API access api.php, scoped keys Not included Included Included
Webhooks HMAC-SHA256, 3 retries Not included Included Included
Queue order FIFO by queued_at — there is no priority lane Oldest job first Oldest job first You own the queue
File retention FC_FILE_TTL — one global value, enforced by purge 24 hours 24 hours Any value you set
Batch size FC_MAX_BATCH_SIZE — one global value 200 files 200 files 200 files by default
API rate limit FC_RATE_LIMIT_*, per 60s window. Both limits apply at once 600 / min per key, 300 / min per IP Your setting
Support level Community Email, 2 business days Named engineer

Add-ons and overage

The base service deliberately ships without these — each one costs image size, CPU or both. Turn on the ones you actually need.

  • Extra minutes

    Overage is billed at $0.028 per conversion minute. Jobs keep running; you are never cut off mid-batch.

  • Virus scanning

    ClamAV in front of every upload. Off by default because the base service validates size, type and filename, not content.

  • Headless browser

    Chromium for website capture and HTML rendering. It adds roughly 500 MB to the image, so it is opt-in.

  • OCR pipeline

    ocrmypdf ahead of text extraction, so scanned PDFs produce text instead of an empty file.

  • Dedicated workers

    A reserved pool sized to your cores. Worth it for office formats, where concurrent LibreOffice runs contend.

  • Extended retention

    FC_FILE_TTL is one global number, so raising it past 24 hours is a change to the deployment rather than a per-account setting: everyone's files then live that long, and the disk has to hold them. Worth sizing before asking for it.


What happens to your files

Short version: they are processed, they are handed back, and then a purge job deletes them. The long version is in the security notes, which are candid about the gaps as well as the guards.

  • Deleted on a schedule Finished jobs expire 24 hours after they are produced, and a scheduled purge job is what removes them. Nothing runs on a timer at the moment of expiry: a file is deletable from then on, and it is deleted the next time purge runs. Retention is a floor, not a stopwatch.
  • Download links are capabilities Export tokens carry at least 128 bits of entropy from the system CSPRNG and are signed with HMAC-SHA256. Guessing one is not a practical attack.
  • Keys are stored hashed API keys are kept as SHA-256 hashes and shown once, at creation. We cannot recover yours, which is the point. Scope each key to the narrowest permission that works.
  • URL imports are filtered Hostnames are resolved and checked against loopback, private, link-local and reserved ranges, and every redirect hop is re-checked. Only HTTP and HTTPS are accepted.
  • Data handling on request A processing agreement, a record of sub-processors and an export or erasure of your account data are available to any paying customer, on request, without a support tier attached.
  • Or keep it all in-house The self-hosted plan is the honest answer to a strict data policy: your storage volume, your network, your retention setting, and no file leaves your infrastructure.

The numbers behind it

  • 256 MiB upload
  • 1 GiB by URL
  • 200 files / batch
  • 50 tasks / job
  • 24h retention
  • 600 / min per key
  • 300 / min per IP
  • 900s task timeout

No claim is made about encryption at rest — files sit on the host's storage volume until the purge removes them. If that is not good enough for your data, run it yourself.


Billing questions

Convert something first, decide later

The browser form needs nothing from you. When you are ready to automate it, an account takes a minute and the first key works immediately.

Create an account Read the API docs