How it works

Real processing, in your browser.

FormatOnce has no upload endpoint. Each tool uses browser APIs that already exist on your device, which is why results appear instantly and your content never travels.

Every tool, and what it can really do

Images

  • Compress image

    Pick a limit like 100 KB or 1 MB and the page lowers quality, then scales the image down, until the encoded file really fits under it. Images up to 20 MiB; the result is under the limit you pick, not an exact size.

  • Convert image

    Turn a JPG, PNG or WebP into another of those formats, optionally capped to a maximum width or height. Images up to 20 MiB; images are never enlarged and the aspect ratio is kept.

  • HEIC to JPG

    Open an iPhone HEIC or HEIF photo on a device that refuses it by converting it to JPG, PNG or WebP on your own machine. HEIC photos up to 40 MiB and 60 megapixels, decoded on device, stopping after two minutes.

  • iPhone photo to JPG

    Drop a photo straight from an iPhone — HEIC, HEIF, JPEG or PNG — and get a JPG under the upload limit a form demands. Targets from 10 KB to 20 MB; the output is under the target you choose, and photos are never enlarged.

  • WebP to JPG

    Turn a WebP image into a JPG that older apps and printers accept, or into a PNG when transparency matters. Images up to 20 MiB; an animated WebP yields its first frame only.

  • AVIF to JPG

    Open an AVIF image in software that cannot read it yet by converting it to JPG, or to PNG for transparency. Images up to 20 MiB, and only if your own browser can decode AVIF; the first frame only.

  • JXL to JPG (Beta)

    Convert a JPEG XL file to JPG or PNG on your device, even though almost no browser can display .jxl yet. Beta: input up to 10 MiB, output up to 20 megapixels, 60-second decode, and some valid JPEG XL variants cannot be decoded here yet.

Data

  • Fix CSV

    Repair a CSV that opens as one column or with mangled accents, then export UTF-8 CSV that Excel reads correctly. Text files up to 5 MiB; values stay text, so leading zeros and long IDs survive.

  • CSV ↔ JSON

    Turn a CSV table into an array of flat JSON objects for an API, or turn such an array back into CSV. Files up to 5 MiB; values are never type-guessed, so IDs keep their exact digits.

  • JSON validator

    Check whether JSON parses, see where the first error sits, and format or minify it afterwards. Input up to 5 MiB; large integers keep their exact digits instead of being rounded.

Audio

  • WAV to MP3

    Make an uncompressed WAV recording small enough to email or upload by encoding it as MP3. Audio up to 100 MiB and 10 minutes; MP3 is lossy and may resample or downmix the source.

  • M4A to MP3

    Convert a voice memo or an M4A track into an MP3 that car stereos and upload forms accept. Audio up to 100 MiB and 10 minutes; whether the M4A codec can be decoded depends on your browser.

  • MP4 to MP3

    Keep only the audio of a talk or interview recorded as MP4 video, written out as an MP3. Audio up to 100 MiB and 10 minutes; only the primary audio track is converted and the video is discarded.

SVG

  • SVG to PNG

    Render a logo or icon from SVG to PNG at the pixel size you need, with an optional transparent background. SVG up to 5 MiB and 8000 px per side; scripts, remote references and other active content are rejected.

How the processing works

Images

Your image is decoded by the browser, drawn onto a canvas at the size we calculated, and re-encoded. For a size target we binary-search encoder quality and then scale the image down step by step, checking the real encoded byte size each time. If no combination fits, you get a clear failure rather than an oversized file. Re-encoding removes metadata, and JPG output flattens transparency onto white because JPG has no alpha channel.

CSV

CSV is parsed with a full parser that understands quoted delimiters, doubled quotes and newlines inside fields. Delimiters are detected by counting candidates outside quoted sections, and you can override both the delimiter and the encoding (UTF-8 or Windows-1252). Values are never type-guessed, so leading zeros and long IDs survive. Export adds a UTF-8 byte order mark so Excel reads accents correctly.

JSON

Validation and formatting use a lossless parser, so numbers keep their exact digits instead of being rounded to what a JavaScript number can hold. Parse errors report the character position with its line and column where the browser provides one.

HEIC and HEIF

Browsers cannot decode Apple's HEIC photos on their own, so the HEIC to JPG tool loads libheif compiled to WebAssembly — only when you open that tool — and runs it inside a background worker, which keeps the page responsive. The file's own bytes are checked first, so a JPEG renamed to .heic, an AVIF file or a video container is rejected with an explanation. The decoded image is already upright, so it is never rotated twice, and the output is re-encoded from pixels: metadata including GPS is dropped and HDR is flattened to standard sRGB.

WebP, AVIF and iPhone photos

The WebP to JPG, AVIF to JPG and iPhone photo to JPG pages share one converter. It reads the file's own signature, so a mislabelled file is named for what it really is instead of failing cryptically, and a container that declares more than one frame warns you that only the first frame is converted. HEIC input is decoded once through the same WebAssembly worker and that single decoded image is reused for every encoding attempt — no repeated decoding and no throwaway JPEG in between. AVIF and WebP input rely on your browser's own decoders, so a very old browser may refuse a file that a newer one opens.

JPEG XL

Almost no browser can display a .jxl file yet, so the JXL to JPG tool loads libjxl compiled to WebAssembly — only when you convert — and runs it in a background worker that belongs to that one conversion, so cancelling or a timeout really stops the work. The file's own signature is checked first, and both the bare codestream and the container form are accepted. Output is re-encoded from pixels: metadata is dropped, HDR and higher bit depths are flattened to 8-bit, only a single still image is produced, and a JPEG XL made losslessly from a JPEG is not rebuilt bit-for-bit.

Hitting a size limit

On the iPhone photo page you can ask for a file under 100 KB, 500 KB, 1 MB, 2 MB or a size you type yourself. The page encodes candidates and measures the real byte size of each one, lowering JPG quality first and reducing the pixel dimensions only if quality alone is not enough. Photos are never enlarged. The result panel shows the measured bytes and dimensions, and if nothing fits the target you get a failure instead of a download that is still too big.

WAV, M4A and MP4 to MP3

The three MP3 pages share one engine built on Mediabunny, which reads the file directly from your device and only the parts it needs — the whole file is never copied into memory. For an MP4 the video track is discarded without being decoded, so only the sound is processed. The real codec is checked before anything starts: if your browser has no decoder for it, or the audio is protected, you are told instead of getting a broken file. Only the primary audio track is converted; extra tracks are left out rather than mixed in. MP3 encoding uses a WebAssembly build of LAME that ships with the app and runs in its own worker, so nothing is fetched from elsewhere. Cancelling stops the decoder and encoder and frees them.

SVG

SVG is scanned against a strict allowlist before anything is rendered. Scripts, event handlers, foreignObject, CSS @import, url() references to remote files and any href that is not a local #fragment cause a rejection with an explanation. Safe markup is sanitized, turned into a blob, and drawn through an image element onto a canvas — it is never injected into the page.

Limits, stated plainly

  • Images up to 20 MiB; HEIC photos up to 40 MiB; JPEG XL up to 10 MiB; text, CSV, JSON and SVG up to 5 MiB.
  • Image output capped at 40 megapixels; SVG rendering at 8000 px per side.
  • AVIF input works only if your browser decodes it. HEIC/HEIF is decoded on device, up to 60 megapixels, and stops after two minutes.
  • JPEG XL up to 10 MiB, decoded on device; output capped at 20 megapixels (checked after decoding, so it bounds the output rather than the decoder's memory) and stopped after 60 seconds.
  • Audio up to 100 MiB and 10 minutes; MP3 output up to 48 MiB; a conversion stops after ten minutes. Which audio codecs work depends on your browser.
  • Very large files depend on your device's memory, not on a server.
Back to the tools