What TRANSFORMER does
TRANSFORMER is a file transformation tool with several functions: image conversion (between WEBP, AVIF, JPG and PNG, and to ICO and TIFF), video conversion (between MP4, WebM, MKV, animated GIF and animated WebP), audio conversion (between MP3, AAC, Opus, WebM/Opus, OGG, FLAC and WAV), data transformation (HTML↔MD, JSON↔CSV, JSON↔YAML, spreadsheets↔CSV/JSON, DOCX, image OCR, beautify and minify), PDF operations (create a PDF from images or text, merge, insert, split, compress, OCR, number, metadata, convert to images, text or DOCX, and a page editor) and batch renaming with masks and variables. All the functions work on the same file queue: you load once and choose the corresponding tab in the right-hand column (Image, Video, Audio, Data, PDF or Rename).
This documentation is split across tabs: General (what is common to everything), one for each working tab (Image, Video, Audio, Data and PDF), Advanced (recipes, guided flows, user presets, viewer and editors, Settings, session and history) and Formats (every parameter of every encoder). It opens by clicking the TRANSFORMER title in the header and closes with Esc, with Close or by clicking outside the window.
Privacy
All processing (loading, conversion, scaling, renaming, ZIP/PDF generation and metadata editing) is done entirely on your device, inside the browser. No file or private data is uploaded, shared or stored on external servers: the files never leave your device. All the libraries (WASM codecs, FFmpeg engine, data utilities) are served from the site itself; only if a local file failed would it be downloaded from its official CDN with subresource integrity (SRI) verification. After the first load everything is cached and the work is completely local. The AI models (Real-ESRGAN upscale, background removal) and the OCR engine are downloaded only the first time you use them; the only thing travelling over the network is that download, never your files.
On your device, inside the browser's local storage, TRANSFORMER can save:
- Session — the loaded files (with their content, up to the limit you choose) to offer to restore them on your next visit.
- Conversion history — original and output file names, operations and dates; it is cleared from the History modal itself.
- Tab settings — the values of the controls; they are reset with a click on the Preset label (or Settings, or Type) of each tab.
- User presets, recipes and Settings preferences.
- Downloaded models and engines (upscale, background removal, OCR), in the cache.
Each one can be disabled or deleted separately in Settings → Data in this browser (see the Advanced tab), or all at once with Reset everything or by clearing the site data. None of it leaves your device.
Installation and offline use
TRANSFORMER is an installable application (PWA). When the browser allows it, a banner appears with the Install button and the Install link in the footer; once installed, it opens in its own window, without browser bars. After the first visit, the application and its engines (WASM codecs and FFmpeg) are cached, so you can keep working without an internet connection. Next to the Convert button the offline indicator appears when there is no network. If a new version is published while the application is open, a banner is shown to refresh and update.
Remembered settings
The values of the controls of each tab (Image, Video, Audio, Data, PDF and Rename: format or operation, preset and all the settings, including those of the Scale, Adjustments, Background, Max size and Filters modals) are remembered between sessions in this browser. The Preset label of each tab (in Data it is called Settings and in PDF Type) is clickable: it resets that tab's default values. If you edit a control with a preset applied, the selector switches to “Custom”, as always. You can disable this memory in Settings.
Loading files
- Drag and drop files onto the left-hand area.
- Click on the loading area (or on Load files) to open the unfiltered file selector.
- Type links under the loading area — Image, Video, Audio and Data open the selector filtered to that type's formats (on hover, the tooltip lists them).
- Folder — loads all the files of a folder, including subfolders. Hidden files and those in unsupported formats are discarded.
- Ctrl+V at any time (or the Paste from clipboard button) to paste an image, a video or an audio from the clipboard (screenshots, images copied from other apps).
- URL — click the URL link under the loading area, paste a file's address (http/https) and click Load: it is downloaded in the browser and enters the queue. It only works with servers that allow downloading from other websites (CORS); if the server blocks it, you are warned (the browser extension, if you use it, may bypass that limitation).
Supported image formats: PNG JPG WEBP AVIF HEIC GIF BMP SVG ICO
Supported video formats: MP4 WebM MOV MKV
Supported audio formats: MP3 WAV AAC M4A OGG Opus FLAC
Supported data formats: HTML HTM MD JSON CSV TSV YAML YML DOCX XLSX XLS ODS CSS JS
PDF documents: PDF (accepted by dragging, pasting the URL or with the unfiltered selector). For the PDF tab, TXT MD HTML and DOCX texts are also read.
You can mix images, videos, audios, data files and PDFs in the same queue: each file is processed with the tab that is active when you click Convert, according to its type. Each tab only lets you select the files it knows how to process (the eligible ones); the rest appear dimmed and are left untouched.
If you load many files at once, reading is split into batches (how many at a time is set in Settings → Performance). PDFs show their page count in their row; one that is password-protected, damaged or has no pages is flagged with the reason and is not selectable.
Global action buttons
- Convert (gear icon) — starts or cancels the conversion of the selected files according to the active tab (Image, Video, Audio, Data or PDF). Each file is processed with the engine suited to its type. If it is disabled, the tooltip explains why (nothing selected, no applicable operation…). During a guided flow it is called Next and shows the step (see Advanced).
- Rename — (Visible in the Rename tab) applies the bulk naming changes to all the files.
- Download all — starts the sequential individual download of all the generated files (with the pause between downloads that you set in Settings). The badge shows how many there are. From the number of files you choose in Settings, using the ZIP is suggested.
- ZIP — downloads all the converted files in a single ZIP. Its default name is
transformer_YYMMDD; it is changed in Settings → Output (it accepts %date%, %time% and %n%).
- ZIP + Viewer — the same ZIP, with the files inside a folder and a
_visor.html added: a standalone gallery (“Transformer viewer”) that, once the ZIP is unzipped, opens in any browser, offline, to view the images, videos, audios and data in the folder.
- PDF — shortcut to assemble a PDF from what has been converted: it opens the PDF tab with the Images → PDF operation selected. The details (page size, quality, resolution, PDF/A) are in the PDF tab of this help.
- Share — (phones and tablets with the Web Share API) sends the converted files to other apps on the device. At most 10 files per share; with more, the ZIP is suggested. Only visible if the browser supports it.
- Delete all generated files (trash can under the buttons) — removes all the results and leaves the originals in the queue.
Before exporting (ZIP, ZIP + Viewer, Download all or Share) you are warned if two files are going to come out with the same name.
Recipes
A recipe chains the settings of several tabs and applies them all at once to the selected files: for example, images to WEBP at 1920 px, names in lowercase and download the ZIP. They are managed in My recipes, the list icon with a triangle in the header.
- Compose — each step is a tab with its settings. Set up the tab as usual and click Add step: the recipe copies its settings at that moment. A step's pencil takes it to its tab to change it (Update step); the arrows or the ⋮⋮ handle change the order. When finished choose whether the ZIP is downloaded (with a single output file, that file), the files one by one or nothing.
- Try with 1 file — applies the editor's recipe only to the first selected file, without saving it or downloading anything.
- Apply — from My recipes or with a right-click on the input list. A bar says which step it is on and allows you to Cancel; steps without files of their type are skipped. When it finishes, your tabs return to the settings they had.
- Examples — grouped by type: Lightweight web, Photos for email, Scans to PDF, Merge PDF, PDF to images, Audio to MP3, Extract audio from videos, Text from screenshots (OCR) and Everything for web. They are applied as they are or copied to your recipes to change them.
How a recipe works internally (what each step saves, which files it receives, when a step is skipped, warnings, import and export…) is explained in detail in the Advanced tab.
Per-file buttons — left column (originals)
- Preview (hover) — move the cursor over the row to see the thumbnail in the preview panel (with its properties); it can be disabled or its speed changed in Settings → Interaction.
- Edit (eye icon) — opens the full-screen viewer. For images it is also the editor (rotate, flip, crop, straighten, erase areas); for video and audio, the player with the start and end trim; for PDF, the page editor. Everything is explained in the Advanced tab.
- More actions (⋮) — unfolds the row's secondary actions:
- Metadata — (images) the file's EXIF editor.
- Properties — table with dimensions, duration, codecs, pages, etc. The Analyse rows read the full EXIF or the FFmpeg information on demand.
- Open in new window — opens the original in a new browser tab.
- Share — sends the original to another app (Web Share).
- Delete — removes that file from the queue (it can be undone with Ctrl+Z).
The trash can in the “Imported” bar deletes all the files, loaded and generated.
Per-file buttons — right column (converted)
Always visible: Download, More actions (⋮) and Delete. The ⋮ menu contains the rest:
- Rename inline — manually edits the name of an individual file (pencil icon).
- Metadata — opens the metadata editor (Artist, Copyright, Description, etc.). For images these are EXIF fields, in the formats that allow writing in the browser (not TIFF); for converted videos and audios, the container tags that FFmpeg writes (title, artist…). By default the output comes out clean, without the original's metadata; the editor has buttons to copy the original's, delete them all or apply the changes to all the selected ones, and Verify re-reads what was written. The default behaviour (clean, copy without GPS or copy all) is chosen in Settings → Output.
- Preview — full screen. Converted videos and audios play directly; for images, the Compare with the original button opens the before/after comparator (see Advanced).
- Properties — the same table as in the left column, but for the output file.
- Open — opens the converted file in a new browser tab.
- Copy — copies the image to the clipboard. For formats not directly supported by the browser (AVIF, etc.) it is automatically converted to PNG as a fallback. Not available for videos or TIFF.
- Download — downloads the individual file.
- Share — sends the converted file to another app on the device (Web Share). If the device does not support sharing files, it shares the name as text.
- Delete — deletes only the converted result, keeping the original in the queue (it can be undone with Ctrl+Z).
Each output row shows its dimensions (or pages, or duration), the resulting size and, in brackets, the percentage it represents relative to the original. Outputs that do not hang from an original (the PDF from Images → PDF, the pages from PDF → images…) carry the Generated label.
Context menu (right-click)
- On a row — repeats that row's actions (the same as its buttons and the ⋮ menu).
- Left column — in addition, Convert, Apply recipe (your saved recipes, up to six; with more, More recipes… appears) and Delete all.
- Right column — in addition, Download all and Delete all. If you right-click on an already selected row and there are several generated ones selected, the menu acts on all of them: download, ZIP, share (up to 10), edit the images' metadata and delete.
On touch screens there is no context menu: a long press selects, and the actions are in the ⋮ button of each row.
Selection and batch operations
Conversion and the rest of the bulk operations act only on the selected files (highlighted in the left list). Files enter selected by default when they are loaded.
- Click / Ctrl+Click on the name — selects or deselects that file.
- Shift+Click — selects the range from the last file clicked to this one, file explorer style.
- Ctrl+A — selects all the eligible files of the active tab.
- Buttons in the “Imported” bar — All/None (toggles), Same extension (adds the eligible ones with the same extension as those already selected) and Invert; they act only on the eligible files according to the active tab (Image, Video, Audio, Data, PDF or Rename).
- Long press (touch screens) — toggles the row's selection.
With a partial selection, the bar's counter shows N sel / N total.
The right column has its own selection, with the buttons in the “Generated” bar: all, same output extension, invert and, if there are duplicate names, only those with a name conflict. That selection is what the bulk context menu uses.
Reordering the queue
Drag a row (with the mouse, or hold it down on touch) to move it. The order of the list matters: it is that of the %n% counter, that of the pages in Images → PDF and that of the documents in Merge and Insert.
Undo and redo
Ctrl+Z undoes the last operation on the list (deleting a row, discarding a result, renaming) and Ctrl+Shift+Z or Ctrl+Y redoes it. The last 20 are remembered. If the file has already changed by another route (it was reconverted, it was deleted), that entry is skipped so as not to undo falsely. The image and PDF editors have their own undo, independent of this one.
Under the “Files” bar the batch operations bar appears when there is an active selection in the Image or Video tabs:
- Image — rotate 90° left/right and flip horizontal/vertical all the selected images at once (the transformations are applied when converting, as in the individual preview), and Metadata: edit the fields once and they are applied to all the selected images.
- Video — rotate and flip the selected videos (applied during conversion via FFmpeg) and trim by percentage: enter the start and end in % and click Apply; each video calculates its absolute trim from its current effective duration. Remove removes the trim from the selected ones. If the selection mixes orientations (horizontal/vertical) a warning is shown.
Engine indicators
The active tab of the right panel summarises its loading state in a pilot light anchored at the bottom left: a coloured dot —grey on standby, blue while loading, green when ready and red if it fails—. The label with the detail appears when you hover over it. It covers the image WASM codecs (libwebp, libavif, MozJPEG, OxiPNG), the FFmpeg.wasm engine (downloaded the first time a video or audio is processed and then cached), the Data libraries, pdf-lib and pdf.js in PDF, and the AI models and OCR when they are used.
Size estimation
In Image, while you move the controls, the reference row estimates how much the output will weigh, without waiting to convert. It can be disabled in Settings → Performance if the machine is struggling.
Very large files and memory
Before converting a video or audio that might exhaust the tab's memory (estimated according to size and device memory) a confirmation appears with the option to continue, or to trim the clip or reduce the resolution before retrying. If a conversion fails for lack of memory, a warning is shown with those same suggestions. The warning threshold is chosen in Settings → Performance (automatic based on the machine, 1, 2 or 4 GB, or do not warn), and it also applies to large PDFs (see the PDF tab).
On mobile
Below 700 px wide, the Input and Output columns become two pages that are switched by sliding or with the header selector. After importing files, Output is shown, which is where the work continues. A long press selects rows and the actions are in the ⋮ button.
Keyboard shortcuts
- Ctrl+Enter — Convert
- Ctrl+A — Select all the eligible files of the active tab
- Del — Delete the focused file
- Space — Select/deselect file (left side)
- Ctrl+Space — Floating preview of the focused file
- ↑ ↓ — Move focus between files in the same column
- ← → — Move focus to the opposite column
- 0 — Rename tab
- 1 2 3 4 — Image / Video / Audio / Data tabs
- Ctrl+↓ — Download all individually
- Shift+↓ — Download ZIP
- Ctrl+Shift+↓ — Download ZIP + Viewer
- Ctrl+Z — Undo the last operation on the list
- Ctrl+Shift+Z / Ctrl+Y — Redo
- Esc — Close the context menu, the help or the open modal
The shortcuts do not act while you are typing in a text field. With the viewer open, the keys belong to the viewer (see its shortcuts in the Advanced tab). The PDF tab has no number key: it is chosen with the mouse.
Batch renaming
Switch to the Rename tab (at the top of the right column) to modify the output names in bulk. Renaming works the same for any type of file (image, video, audio, data or PDF):
- Name mask: Type a base text; when you hover over or focus the Name field the variable chips and the
%n% counter are revealed, and when you focus Replace, its wildcards (click a chip to insert it, e.g. img_%date%_%n%). If you leave it empty, the original name is kept.
- Supported variables:
%name% (original name), %n% (numeric counter), %ext% (original extension), %date% (current date), %time% (current time), %width% (output width) and %height% (output height).
- Extension: Lets you force a specific output extension regardless of the conversion format.
- Counter: Set the Start number, the Step (increment per file) and the Digits (leading zeros, e.g. 3 digits = 001).
- Preview and Applying: The projected names are shown in italics in the right-hand list. Click the Rename button (or Convert, which applies the pending pattern to the files it converts) to apply and fix the names on the files. While the mask is not
%name% and has not been applied yet, the Rename tab is shown in italics.
Duplicate names are flagged in the right-hand list with an amber warning as soon as two already converted files would produce the same output name (comparison ignoring case and leading/trailing spaces; including the mask preview for the selected ones). When exporting to ZIP, ZIP with viewer, “Download all” or share, duplicates are also warned about before continuing.
Replace (find and substitute)
The Replace block lets you find a pattern within the base name (after applying the mask) and substitute it with another text. It is applied to all the files.
- Pattern field: Literal text or glob-type pattern to find. If left empty, no substitution is applied.
- Replacement field: Text with which each match will be replaced. It can be empty (equivalent to deleting the found pattern).
- Wildcards in the pattern:
* or %any% — any number of characters (including none).
? or %chr% — a single character of any kind.
# or %num% — a digit (0-9).
@ or %txt% — a letter (includes accents).
%Nstart% (e.g. %3start%) at the start — the first N characters of the name.
%Nend% (e.g. %3end%) at the end — the last N characters of the name.
- Variable in the replacement:
%N% inserts a simple counter (1, 2, 3…) based on the file's position in the list.
- Case sensitivity (Aa): By default the search ignores case. Enable the Aa checkbox to require an exact match.
- Order of application: First the mask variables are resolved (
%name%, %n%, etc.), then the replacement is run, and finally the Case transformation.
Case (uppercase/lowercase transformation)
The Case selector applies a final transformation to the base name (it does not affect the extension). Available options:
- — (default): no transformation, it is kept as is.
- lowercase: converts the whole name to lowercase. E.g. Mi_Foto_01 → mi_foto_01.
- First: capitalises only the first letter of the name and lowercases the rest. E.g. mi_FOTO_01 → Mi_foto_01.
- Words: capitalises the first letter of each word (Title Case style). E.g. mi_foto_de_viaje → Mi_Foto_De_Viaje.
- UPPERCASE: converts the whole name to uppercase. E.g. mi_foto_01 → MI_FOTO_01.
Image conversion flow
- Select the Image tab at the top of the right column.
- Choose the Preset, the output Format (WEBP, AVIF, JPG, PNG, ICO or TIFF) and the Scale.
- Adjust the format-specific advanced controls if you need to (the details of each one are in the Formats tab).
- Click Convert. You can cancel during the process.
- The generated files appear in the right-hand column.
Supported input formats
You can load image files in the following formats: JPG PNG GIF WebP BMP TIFF HEIC HEIF AVIF SVG ICO. HEIC/HEIF files are decoded with heic2any and TIFF with UTIF.js (for a multi-page TIFF the first one is used) before going to the selected encoder. SVGs are rasterised to the requested size.
Scale and dimensions
The Scale slider adjusts the size as a percentage of the original. Click the Scale label to open the advanced modal with the following options:
- Numeric percentage: Enter the exact value or use the /2 (half) and x2 (double) buttons for quick adjustments.
- px mode: Defines how the target width and height are interpreted. There are five modes, in two families.
The three single-factor modes use a single field (percentage, width or height) and deduce the other side from the original ratio, so they never distort, but they also do not let you set width and height at the same time:
- Maximum: it will not exceed the given dimension; images that are already smaller are left intact.
- Minimum: it will cover the given dimension; images that are already larger are left intact.
- Force: applies the dimension strictly, in both directions.
In those three the active field priority applies: the last field you edit becomes the active rule and the inactive ones are shown struck through.
The two fit modes use width and height at the same time to reach an exact dimension without distorting:
- Centred crop: scales until it covers the requested width and height and crops the excess from the centre. Exact size, no bars and no distortion, at the cost of losing part of the image. Ideal for square thumbnails and grid galleries.
- Letterbox: scales until the whole image fits and fills the gap with bars. Exact size, no distortion and nothing lost, at the cost of the bars. Ideal for fitting mixed-ratio material into a common canvas. The Bars control lets you choose their colour or mark them transparent (in JPG, which has no alpha, they are filled with white).
In the fit modes the percentage does not come into play and its slider is disabled. If you only fill in one of the two fields, both behave as Force. The width and height always refer to the final image: with the image rotated 90° or 270°, the crop and the bars are calculated on the already rotated result.
Interpolation
The Interpolation drop-down in the scale modal decides how the new pixels are calculated when resizing:
- Smooth (photography) — averages the neighbouring pixels. It is the default behaviour and the right choice for photographs and any image with gradients: the edges come out clean and without jaggies.
- Nearest neighbour (pixel art) — copies the closest pixel without blending colours. The edges are kept absolutely hard and no new colour is introduced. It is what is needed in pixel art, screenshots, graphics with small text, single-pixel lines or diagrams: with smooth interpolation, enlarging pixel art blurs it and shrinking a screenshot smudges the text.
Note: when enlarging, Nearest neighbour produces the classic square-pixel effect. If what you want is to enlarge a photograph without it looking blurry, the right tool is not interpolation but the Upscale described below.
Upscale (enlargement)
The Upscale checkbox enlarges the image before fitting it into the target dimensions, with a 2x or 4x factor. It only acts when the target is larger than the source, and on the already cropped area. Two engines:
- Lanczos3 (fast): Lanczos resampling with radius 3 in its own worker. No downloads, works offline and takes seconds. It gives much cleaner edges than the browser's scaling, but it does not invent detail that was not already in the image. It is the default engine.
- Real-ESRGAN (AI): super-resolution neural network with
onnxruntime-web, by overlapping tiles. It does reconstruct texture and edges, but it downloads about 105 MB the first time (then cached) and needs WebGPU to be practical: without it, it falls back to a single-threaded CPU, in the order of tens of minutes per megapixel, and you are warned. Your images still do not leave the machine: the only thing that travels is the model download.
The modal warns of the expected cost according to engine and factor. During conversion the file's progress bar reflects the phases (download, initialisation and inference) and Cancel aborts instantly.
Remove background
The Background cell opens the modal to remove the background of each image with a segmentation neural network (onnxruntime-web) that runs on your machine: it leaves the subject with transparency. Two engines:
- Fast (U²-Netp): downloads 4.6 MB the first time and takes a couple of seconds per image. It computes the mask at 320 px, so on hair or fine details the edge is somewhat soft.
- Quality (ISNet): downloads 178 MB the first time and takes in the order of 10–20 s per image. Mask at 1024 px, with much more precise edges, hair included.
Edge contracts (to remove the background halo) or expands the mask, and Smoothing blurs the cut; both in image pixels. Fill places the subject over a colour instead of transparency (JPG, which does not support transparency, comes out with a white background if you do not choose a colour). Crop to subject fits the frame to the subject before scaling. To keep the transparency, convert to PNG, WebP, AVIF or TIFF.
The network is applied after the edits to each image (erasing, straightening, cropping) and before scaling. Only the first conversion of each image runs it: changing the edge, the fill or the format reuses the mask. The models are cached and are deleted from Settings.
Max size
The Max size cell sets a size ceiling per image (in KB, MB or % of the original). When converting, the highest quality that fits is sought, without going above the chosen one or below 40; if that is not enough and it is allowed (by default), the dimensions are reduced just enough. Lossless PNG and WebP can only reduce dimensions. The output row states the quality it ended up with, or warns in amber if it did not fit.
Image adjustments
The Adjustments cell opens a modal with five sliders and a preview of the reference image, already edited and resized, reduced to the size of the modal:
- Brightness (−100 to +100) — lightens or darkens the whole image equally, shadows included.
- Contrast (−100 to +100) — spreads out or brings together the light and dark tones around mid-grey; −100 leaves a flat grey.
- Saturation (−100 to +100) — colour intensity; −100 converts to greyscale and +100 doubles it.
- Gamma (0.20 to 3.00) — lightens (> 1) or darkens (< 1) the midtones without moving black or white. Useful for underexposed photos.
- Sharpness — positive enhances the edges (unsharp mask); negative blurs. It is calculated at the final size, so it is worth checking in the comparator.
They are applied to all the images when converting, after the edits to each image and the resizing, and they do not touch the letterbox bars. A double click on a slider returns it to its neutral value; Reset returns them all.
Processing order
Each image goes through the stages in this order: decoding (HEIC, TIFF, SVG…) → areas erased in the viewer → straightening → viewer crop → remove background (and crop to subject) → upscale, if enlarging → scale and px mode (centred crop or letterbox), with the rotation and flip → colour and sharpness adjustments → encoding in the chosen format → max size, if active (repeats the encoding with another quality or size) → output metadata.
Individual and batch editing
Each image can be edited in the viewer (the eye icon in its row): rotate, flip, crop with a fixed or free ratio, straighten at a free angle and erase areas filling them with colour. The edits are saved in the file and are applied when converting; the details of each tool and its shortcuts are in the Advanced tab. For several images at once, the batch bar under “Imported” rotates, flips and edits the metadata of all the selected ones (see General).
After converting, the output viewer lets you compare with the original with a sliding divider and calculate the SSIM (see Advanced).
ICO / Favicon
The ICO / Favicon format generates a .ico with the sizes 16, 32, 48, 64, 128 and 256 px, all inside the same file. With the Favicon pack (.zip) checkbox enabled, the output is a web-ready ZIP with favicon.ico, apple-touch-icon.png, icon-192.png, icon-512.png and a site.webmanifest. It is best to start from a square image of at least 512 px.
TIFF
The output TIFF is always lossless. Controls:
- Compression — LZW opens in any print and layout program; Deflate (ZIP) weighs somewhat less and is read by Photoshop, GIMP, Affinity and libtiff; Uncompressed is the most compatible and weighs 3 bytes per pixel (4 with transparency).
- Resolution (72, 150, 300 or 600 dpi) — the one noted in the file, which the layout program or print shop will take for the printed size. It does not change the pixels; that is what Scale is for.
Browsers (except Safari) do not show TIFF: TIFF outputs have no preview or clipboard copy, but they download normally.
Per-format controls
Each format shows its own advanced controls panel when selected. The exhaustive detail of each parameter is in the Formats tab. Quick summary:
- WEBP: Quality, Method, Near-LL, Alpha, Filter and Lossless mode. Encoder
libwebp.
- AVIF: Quality, Speed, Denoise, Sharpness, Subsample and Alpha. Encoder
libavif.
- JPG: Quality, Subsampling, Smoothing, Q Table, Trellis and Grayscale. Encoder
MozJPEG.
- PNG: Optimisation (1–6), Colours and Interlaced. Encoder
OxiPNG; lossless unless the colours are reduced.
- ICO / Favicon: Pack checkbox (ZIP with favicon and web icons).
- TIFF: Compression (LZW, Deflate or uncompressed) and Resolution in dpi. Always lossless.
Image presets
Optimised
Quality/size balance intended for general web use. Recommended starting point for most images.
Max Quality
Prioritises visual fidelity over file size. Suitable for images that are going to be viewed at high resolution or that require minimal degradation.
Min Size
Maximises size reduction with aggressive compression. Ideal for thumbnails, background images or contexts with limited bandwidth where size is critical.
Lossless
Lossless encoding: reproduces the original pixels exactly. In WEBP and PNG it guarantees perfect quality; in AVIF and JPG it gets as close as possible with their encoders.
— Custom —
It activates automatically when any control is modified manually. Selecting a preset again restores its default values for the active format.
Video conversion flow
- Select the Video tab at the top of the right column.
- Choose the Preset, the output Format (MP4, WebM, MKV, animated GIF or animated WebP) and the global controls (Resolution, FPS, Audio, Filters).
- Adjust the format-specific advanced controls if you need to (the details of each one are in the Formats tab).
- If you want only a segment, open it in the viewer (eye icon) and set the start and end of the trim, or use the percentage trim in the batch bar.
- Click Convert. You can cancel during the process.
- The FFmpeg.wasm engine (~25 MB) is served from the site itself; the first video conversion downloads it and the following ones are immediate.
Trim
In a video's viewer, under the player, a bar appears with two handles to set the start and the end, and two time fields in mm:ss.ms format. The playback line marks where you are and the label shows the duration of the segment. The reset button removes the trim and returns to the full clip. The conversion generates only the chosen segment (also in GIF and animated WebP). For several videos at once, the batch bar accepts the trim as a percentage of each one's duration (see General).
Video filters
The Filters cell opens a modal with filters that are applied to all the videos when converting, also in GIF and animated WebP. The preview only shows the colour, approximately. A double click on a slider returns it to its neutral value; Reset returns them all.
- Brightness, Contrast, Saturation and Gamma — the same scale as the image adjustments: −100 to +100 (saturation −100 leaves the video in black and white) and gamma from 0.20 to 3.00.
- Noise (None, Light, Medium, Strong) — noise reduction with
hqdn3d. It smooths the grain of low-light recordings and usually lowers the size; at high levels fine detail is lost.
- Deinterlace — removes the horizontal lines from interlaced videos (DVB, old cameras). Automatic only processes the frames the file marks as interlaced; Always processes them all, for mislabelled files.
- Stabilise (slow) — compensates for handheld camera shake (
deshake). It is a basic stabiliser that makes conversion considerably slower; the edges left exposed are filled with the reflected image.
Extracting audio from a video
With a video selected, switch to the Audio tab and convert: only its audio track comes out, in the chosen audio format. The output row is presented as audio.
Supported input formats
You can load video files in the following formats: MP4 WebM MOV MKV AVI OGV. In general FFmpeg.wasm can demultiplex most common containers; the ones listed are those explicitly filtered from the selector and recognised when dragging.
Global video controls
- Resolution: maximum output height in pixels. It keeps the original aspect ratio. Original keeps the input resolution; preset options: 1080p, 720p, 480p.
- FPS: frames per second of the output video. Lowering the FPS noticeably reduces size. Original keeps the source frame rate; preset options: 60, 30, 24, 15.
- Audio: audio track handling. Four modes:
- Encode audio 128k (default): re-encodes the track at 128 kbps (AAC in MP4 and MKV, Opus in WebM).
- Encode audio 320k: the same but at 320 kbps, higher quality and size.
- Remove audio: discards the track. Reduces size and avoids incompatibilities.
- Keep audio: copies the original track without re-encoding (
-c:a copy). It saves time and preserves quality, but it fails if the source codec is not compatible with the container (MP4 accepts AAC; MKV accepts AAC/Opus; WebM accepts Opus/Vorbis).
For GIF and animated WebP the control is disabled: the audio is always discarded (GIF does not support audio). The settings in the Audio tab (Adjustments: high-pass, low-pass, gain and fades) are also applied to the audio of videos when it is re-encoded; with Keep or Remove there is no audio to adjust.
Per-format controls
Each format shows its own advanced controls panel when selected. The exhaustive detail of each parameter is in the Formats tab. Quick summary:
- MP4 (H.264): Quality (mapped to CRF 18–28), Encoder speed (ultrafast → slow) and Profile (Baseline / Main / High). Encoding with x264 via FFmpeg.
- MKV (H.264): the same controls and the same H.264 video as MP4, with AAC audio, but in a Matroska container. Useful as a master file or for desktop players; for the web, MP4 or WebM is better.
- WebM (VP9): Quality (mapped to CRF 15–35), CPU used (encoder effort) and Lossless mode. Encoding with libvpx-vp9 via FFmpeg.
- Animated GIF: Colours (palette max. 256) and Dithering (Bayer / Floyd-Steinberg / None). The audio is always discarded.
- Animated WebP: Quality, Method (encoder effort) and Lossless mode.
Video presets
Optimised
Quality/size balance intended for general web use. It keeps the original resolution and FPS with medium-high quality. Recommended starting point for most videos.
Max Quality
Prioritises visual fidelity over file size. It keeps the original resolution and FPS, raises the encoder quality to the maximum (slower encoder, larger files) and keeps the original audio without re-encoding (-c:a copy). Suitable for masters, archiving or playback on a large screen.
Min Size
Maximises size reduction with aggressive compression. Reduces to 720p and 30 FPS to minimise size. Ideal for quick previewing, sending by messaging or contexts with limited bandwidth.
No Audio (Social)
Configuration optimised for social media: it removes the audio, reduces to 720p and 30 FPS, and applies balanced compression. Suitable for clips intended for Instagram, TikTok, X and the like, where the audio is replaced or plays muted.
Lossless (WebM only)
Available through the Lossless checkbox in WebM (VP9): lossless encoding that reproduces the pixels exactly. It generates much larger files than lossy mode. MP4, GIF and animated WebP do not offer a dedicated lossless mode.
— Custom —
It activates automatically when any control is modified manually. Selecting a preset again restores its default values for the active format.
Audio conversion flow
- Select the Audio tab at the top of the right column.
- Choose the Preset, the output Format (MP3, AAC/M4A, Opus, WebM/Opus, OGG Vorbis, FLAC or WAV) and the global controls (Sample rate, Channels, Normalise volume).
- Adjust the format-specific advanced controls if you need to (the details of each one are in the Formats tab).
- Click Convert. You can cancel during the process.
- The conversion is done with FFmpeg.wasm: if it has not yet been loaded, it is downloaded the first time (~25 MB) and cached for later use.
Supported input formats
You can load audio files in the following formats: MP3 WAV AAC M4A OGG Opus FLAC. Extracting audio from video files loaded in the queue is also accepted by selecting the Audio tab before converting: only the audio track comes out, in the chosen format.
Global audio controls
- S. rate: output sample rate in Hz. Original keeps the input file's. For voice, 16,000–22,050 Hz is usually enough; for music, 44,100 or 48,000 Hz.
- Channels: Original keeps the file's ones, Stereo forces two channels and Mono reduces to one (roughly half the size in lossy formats).
- Normalise volume: applies the
loudnorm filter (EBU R128, target I=-16 LUFS, TP=-1.5, LRA=11). Useful for matching levels between files; it increases encoding time.
Audio adjustments
The Adjustments cell opens a modal with filters that are applied to all the audios when converting, before normalisation, and also to the audio of videos when it is re-encoded (with “Keep” or “Remove” there is no audio to adjust):
- High-pass (40 Hz, 80 Hz for voice, 120 Hz, 200 Hz) — removes what is below that frequency: hum, microphone thumps and wind noise.
- Low-pass (16 kHz, 12 kHz, 8 kHz, 4 kHz telephone-style) — removes what is above: it softens hiss and strident highs.
- Gain — raises or lowers the volume in decibels. +6 dB is roughly double the amplitude; raising it a lot can clip. A double click returns it to 0.
- Fade in and Fade out — duration in seconds of the fade from silence at the beginning and towards silence at the end. The fade out is counted over the trimmed segment. 0 disables them.
Reset returns them all to their neutral value.
Trim
When you move the cursor over an audio file in the left column a playback bar appears with two handles to set the start and the end of the trim; the same in the viewer (eye icon). The conversion will generate only the selected fragment. The time fields accept the mm:ss.ms format; the reset button removes the trim and returns to the full clip.
Processing order
Trim → high-pass → low-pass → gain → fades → normalisation (loudnorm) → output sample rate and channels → encoding in the chosen format. The audio output always discards the image: neither the video nor the embedded artwork goes into the file.
Audio presets
Optimised
Quality/size balance intended for general use. Recommended starting point for most files. It keeps the current format and applies intermediate values (e.g. MP3 VBR V4, AAC 128 kbps, Opus 96 kbps, OGG q5, FLAC level 5, WAV 16-bit).
Max Quality
Prioritises fidelity over size. It keeps the current format and raises the parameters to the maximum reasonable (MP3 VBR V0 ≈ 245 kbps, AAC 256 kbps, Opus 192 kbps, OGG q8, FLAC compression 12, WAV 24-bit).
Min Size
Maximises size reduction with aggressive compression. If the current format is MP3, AAC or OGG, it keeps the format but lowers the bitrate; in any other lossy format it keeps the choice, and from lossless formats (FLAC/WAV) it automatically switches to Opus 48 kbps for its superior efficiency at low bitrates.
Lossless
Lossless encoding. If the current format is not already FLAC or WAV, it automatically switches to FLAC (compression 8). It reproduces the input samples losslessly, at the cost of files significantly larger than any lossy format.
Roland SP-404 MK2
Configuration for the Roland SP-404 MK2 sampler: it forces WAV 48 kHz, 16-bit PCM output and keeps the original channels. Hardware limit: 16 minutes per sample (not enforced in encoding; it remains as a warning).
Roland TR-8S
Configuration for the Roland TR-8S drum machine: it forces WAV 44.1 kHz, 16-bit PCM, mono output. Hardware limit: 600 ms per sample and 256 MB in total (not enforced in encoding; it remains as a warning).
Polyend Play
Configuration for the Polyend Play groovebox: it forces WAV 44.1 kHz, 16-bit PCM, mono output. Hardware limit: 32 MB per sample (not enforced in encoding; it remains as a warning).
— Custom —
It activates automatically when any control is modified manually. Selecting a preset again restores its default values for the active format.
Data transformation flow
- Select the Data tab at the top of the right-hand column.
- Choose the Operation you want (HTML↔MD, JSON↔CSV, JSON↔YAML, spreadsheet↔CSV/JSON, DOCX→HTML/MD/TXT, Image→Text (OCR), Beautify or Minify).
- Adjust the operation-specific controls if you need to, or choose a variant under Settings.
- Click Convert. The result is generated instantly in the browser.
Operation selector
The operations are grouped by intent: Text (HTML↔Markdown), Documents (DOCX and image OCR), Structured (JSON, CSV, YAML and spreadsheets) and Code (Beautify and Minify).
By default the selector shows only the applicable operations: those that have a file in the queue they can read. The last option in the dropdown, Show all, shows the full catalogue (and Show only applicable returns to the filter). If the queue has nothing any operation can read, all of them are shown. The chosen operation decides which input files can be selected: the rest are dimmed.
Supported input formats
You can load text and data files in the following formats, which are accepted depending on the active operation:
- HTML / Markdown:
.html .htm .md .markdown
- JSON / CSV:
.json .csv .tsv
- YAML:
.yaml .yml
- Spreadsheets:
.xlsx .xls .ods (processed with SheetJS)
- DOCX:
.docx (processed with Mammoth.js)
- Beautify / Minify:
.html .htm .css .js .mjs .json
- Image → Text (OCR): any image in the queue.
Each operation produces one output file per input file, with the target extension (for example report.docx → report.html).
Available operations
HTML → Markdown
Converts HTML documents to Markdown using Turndown (v7.2.0) + GFM plugin. The available controls are:
- Headings: ATX (#) or Setext (===) style.
- List: unordered list marker (-, *, +).
- Code: fenced (```) or indented.
- Italic: emphasis delimiter (_ or *).
- GFM: enables GitHub Flavored Markdown (tables, strikethrough, task lists).
Markdown → HTML
Converts Markdown to HTML using Marked (v12.0.2). The available controls are:
- GFM: enables GitHub Flavored Markdown.
- Line breaks <br>: converts single line breaks into <br>.
- Sanitize: sanitises the HTML with DOMPurify to prevent script injection.
- Full doc.: wraps the output in a complete HTML document with basic embedded CSS.
JSON → CSV
Converts JSON to CSV using PapaParse (v5.4.1). The available controls are:
- Delimiter: separator character for the CSV (comma, semicolon, tab, pipe).
- Flatten deeply: flattens nested objects and arrays with dot-separated keys (e.g.
dir.ciudad). Reversible when doing CSV → JSON.
- Header: includes a first row with the column names.
- Line ending: line break style (CRLF or LF).
- Always quote: quotes every cell value.
CSV → JSON
Converts CSV to JSON using PapaParse (v5.4.1). The available controls are:
- Delimiter: separator character of the input CSV (auto, comma, semicolon, tab, pipe).
- First row = header: uses the first row as field names in each JSON object.
- Automatic typing: automatically converts numeric and boolean values.
- Unflatten: rebuilds nested objects/arrays from dotted keys (the inverse of Flatten deeply).
- Formatted JSON: output with readable indentation.
JSON → YAML
Converts JSON to YAML using js-yaml (v4.1.0). The available controls are:
- Indent: spaces per indentation level (2 or 4).
- Wrap: maximum line width before wrapping (-1 = no limit).
- Sort keys: sorts the keys alphabetically.
- Quotes: quote style for strings (single or double).
- No anchors: disables YAML anchors/aliases (&ref / *ref).
YAML → JSON
Converts YAML to JSON using js-yaml (v4.1.0). The available controls are:
- Formatted JSON: output with readable indentation vs. compact on one line.
- Indent: spaces per indentation level.
Spreadsheet → CSV
Exports a sheet from an XLSX, XLS or ODS workbook to CSV using SheetJS (v0.20.3). The library (about 950 KB) is only downloaded when you choose a spreadsheet operation. The available controls are:
- Sheet: number (1 is the first) or sheet name; empty, the first. If a workbook in the batch does not have it, that file fails and the notice says which sheets it has.
- Delimiter: comma, semicolon (the one Excel expects in Spanish), tab or pipe.
- Formatted values: each cell as it appears in the sheet (dates, currency, percentages); disabled, the raw numbers.
Spreadsheet → JSON
Exports one sheet, or all of them, to JSON with SheetJS. The available controls are:
- Sheet: as in Spreadsheet → CSV.
- All sheets: an object
{ "sheet name": rows } with all the sheets in the workbook.
- First row = header: each row is an object with the names from the first row; disabled, an array of cells. Empty cells come out as
null.
- Formatted values: each cell as text, just as it appears; disabled, numbers as numbers and dates in ISO 8601.
- Formatted JSON: output with readable indentation.
CSV/JSON → Spreadsheet
Creates an XLSX or ODS workbook per file with SheetJS; the sheet is named after the file. A JSON that is an array gives one sheet (nested objects are flattened with dotted keys, as in JSON → CSV); one shaped like { "sheet": [rows], … }, the output of All sheets, gives one sheet per key. The available controls are:
- Format: XLSX or ODS.
- Delimiter: separator of the input CSV (auto detects it).
- Detect numbers: saves CSV cells that look like numbers as numbers. Disable it if there are codes with leading zeros that must stay as text.
DOCX → HTML
Converts Word documents to HTML using Mammoth.js (v1.7.0). The available controls are:
- Include images: embeds the DOCX images as data: URIs.
- Ignore empty paragraphs: skips paragraphs with no content from the original document.
- Full document: wraps the output in a complete HTML document with basic CSS.
DOCX → Markdown
Converts Word documents to Markdown using Mammoth.js. The available controls are:
- Include images: includes the images as data: URIs in Markdown format.
- Ignore empty paragraphs: skips paragraphs with no content.
DOCX → Text
Extracts the plain text from a Word document using Mammoth.js. No additional controls: it returns the document's plain text.
Image → Text (OCR)
Recognises the text of each selected image with Tesseract (tesseract.js 7.0.0) and returns one .txt per image, read with its viewer edits (crop, rotation). It is the only Data operation that reads images. The available controls are:
- Language: Spanish + English, Spanish only or English only.
- Confidence: removes words recognised with low confidence (50, 70 or 85 %) to clear up noise.
- Straighten: corrects a slight tilt before recognising.
The engine (up to about 9 MB, depending on the languages) is not downloaded until you convert for the first time; it stays stored, works offline and can be deleted from Settings. For a scanned PDF, use Searchable PDF (OCR) in the PDF tab.
Beautify
Formats HTML, CSS, JS and JSON code using js-beautify (v1.15.1). The available controls are:
- Indent: spaces per indentation level (2, 4 or 8).
- Wrap: maximum line length before wrapping (0 = no limit).
- Preserve line breaks: keeps existing blank lines.
- Final newline: adds a line break at the end of the file.
The operation automatically detects the type of code from the file extension and applies the corresponding rules.
Minify
Minifies HTML, CSS, JS and JSON code using Terser (v5.31.0) and CSSO (v5.0.5). The available controls are:
- Mangle JS: renames variables and functions to short names (JS only).
- Drop console: removes console.* calls (JS only).
- No comments: removes comments from the code.
- Minify embedded: in HTML, also minifies the CSS and JS inside <style> and <script>.
The output file keeps its original extension, adding .min before the extension (e.g. script.js → script.min.js).
Library loading
Each operation loads its JavaScript libraries on demand, served from the site itself (with a fallback to a CDN verified by SRI if the local file failed). The pilot in the right panel shows Loading libraries… during the download and Ready when they are available. The libraries are cached in the browser for later use.
Operation presets
Each operation offers one or more presets with predefined configurations. The preset varies by operation: for example, in HTML→MD you have Standard (GFM on, ATX), GFM strict and Compact; in JSON→YAML you have Standard, No line wrap (no wrap limit) and Sorted keys (keys sorted). The — Custom — preset switches on automatically when you change any control by hand.
PDF workflow
- Select the PDF tab at the top of the right-hand column (or click the PDF button in the output bar, which opens it with Images → PDF).
- Choose the Operation. Unlike Image, Video or Audio, here you do not choose an output format but what you want to do; the operation decides which controls are shown and which input files can be selected.
- Choose a variant in the second selector, whose name changes depending on the operation (Type, Result, Position, Level, Language, Format, Mode…), and adjust the controls that appear. Below, a note explains what will happen with the chosen operation.
- If needed, edit the pages of each PDF in the viewer (the eye icon on its row): rotate, delete, duplicate, reorder, insert blank pages and crop margins. All operations start from the already edited document.
- Click Convert. You can cancel during the process.
The engine is pdf-lib (creating and modifying documents) together with pdf.js (drawing pages and reading their text), both served from the site itself and loaded the first time they are used. Operations that do not need to draw run in a worker, in the background, so the interface does not freeze on large documents.
Operation selector
The operations are grouped into Create PDF (Images → PDF, Text → PDF and Text and images → PDF) and Operate on PDF (the rest). As in Data, the selector shows only the operations applicable to what is in the queue by default; Show all, at the end of the dropdown, shows the full catalogue, and Show only applicable returns to the filter.
The Pages field
Several operations act on a range of pages. The field accepts:
- Single numbers —
3.
- Ranges —
2-6 (also with an en dash).
- Open ranges —
8- (from 8 to the end) and -3 (from the start to 3).
- Several parts separated by commas or semicolons —
1-5, 12, 20-.
- all (or everything), or the field empty — the whole document.
Pages are counted from 1 and over the already edited document (if you deleted or moved pages in the editor, the numbering is the new one). The order you type is the order of the result: 5, 1, 3 puts those pages out in that order. A repeated page is used only the first time. A backwards range (6-2), a page that does not exist or text that cannot be understood give an error shown under the controls, checked against the first selected PDF; with a batch, a range that goes out of bounds in one document does not stop the rest.
Create PDF
Images → PDF
Assembles a PDF with the already converted images from the right-hand column, in the order of the list (drag the rows to change it). It is the only operation that does not read the input selection: it works on the output, so the images arrive with their edits, adjustments and metadata already applied. Controls:
- Page — Fit to image gives each page the exact size of its image; A4, Letter and Custom fit the image inside, centred and without distorting it. With Custom the Dimensions appear in centimetres (short side and long side, in any order: the orientation decides which one goes horizontally).
- Orientation — Automatic makes each page portrait or landscape depending on whether its image is taller or wider; Portrait and Landscape fix it. Not used with Fit to image.
- Margin (cm) — blank margin around the image; 0 leaves it edge to edge. If the margin leaves no room on the page, a warning is shown and nothing is generated.
- Files — A single PDF with one page per image (
images.pdf), or One PDF per image, each with the name of its image.
- Quality — JPEG quality with which the images are re-encoded before embedding them: it is what decides how much the PDF weighs. High (92 %), Medium (80 %) or Low (60 %). Images with transparency go to PNG, losslessly. Original (no re-encoding) embeds the JPEGs and PNGs as they are: the PDF weighs what they weigh.
- Resolution — pixels per inch at most (96, 150, 200 or 300 dpi), according to the size at which each image is drawn on its page. A 12 Mpx photo on an A4 runs at about 360 dpi: lowering it to 150 leaves it the same on screen and removes most of the weight; 300 dpi is the useful ceiling for printing. It never upscales, and does not affect Fit to image. Original does not reduce.
- PDF/A-2b — see below.
The note under the controls says how many images are ready and estimates the weight of the PDF. Variants of Type: Fit to image (page the size of each image), A4 and Letter (with a 1 cm margin), A4 full bleed (no margin) and 10×15 cm photo.
If the queue has unconverted images, the note offers a guided flow: Next takes you to the Image tab with all the images selected so you can adjust the conversion; another Next converts them and returns to PDF; Convert assembles the PDF. The link Use current settings and assemble now does the three steps in a row with the settings Image already has.
Text → PDF
One PDF per selected text file (.txt .md .markdown .html .htm), with selectable and searchable text, written with the Exo 2 font embedded (only with the characters used). Markdown and HTML become plain text: no bold, drawn tables or images (for that there is Text and images → PDF). Controls: Page, Orientation and Margin (as above; with Fit to image, A4 is used), Font (8 to 18 pt) and PDF/A-2b. Variants: A4, Letter and A4, large type.
Text and images → PDF
Like Text → PDF, but laid out: it keeps headings, bold, italics, lists, quotes, code blocks and images, with selectable text. One PDF per file. The images are taken from the file itself if embedded (data:) or from the queue by name (if the HTML or Markdown references photo.jpg and there is a photo.jpg loaded, it is used); those from the internet are not downloaded. Same controls and variants as Text → PDF.
It also accepts DOCX, but not directly: a DOCX is first turned into HTML in the Data tab (with its images embedded) and what comes out is laid out. If you select DOCX without converting, the note offers a guided flow: Next takes you to Data with DOCX → HTML chosen and the DOCX files selected; another Next converts them and returns to PDF; Convert lays out one PDF per document. Use current settings and lay out now does it all in a row. The converted text is stored separately, so you can lay it out again with other settings without repeating Data.
PDF/A-2b
The PDF/A-2b checkbox saves the PDF in the long-term archival format required by administrations and archives: it adds XMP metadata, the sRGB colour profile and an identifier. It is only available in the PDFs the app creates (the three Create PDF operations), not when modifying an existing PDF.
Operate on PDF
Merge
Merges the selected PDFs into one (merged.pdf), in the order of the input list: drag the rows to change it. It needs at least two. Each document goes in with its edits. The note estimates the weight of the result.
If in addition to PDFs there are unconverted images in the queue, the note offers the guided flow Merge with images (scans or photos that are joined with documents): 1/3 takes you to Image and converts the images; 2/3 assembles them into a PDF with Images → PDF; 3/3 returns to Merge with that PDF at the end of the others, and you can reorder the list before clicking Convert. The PDFs you had selected at the start are merged or, if there were none, all the loaded ones.
Merge pages
Like Merge, but choosing which pages go in from each document. In Pages, separate with | one range per document, in the order of the list: 1-3 | 5 | all takes pages 1 to 3 from the first, page 5 from the second and the whole third one. A range without | applies to all.
Insert a PDF into another
It needs exactly two selected PDFs: the first in the list is the base document and the second, the one inserted (drag the rows to swap them). Pages chooses which pages of the second go in. The Position variant decides where: At the end, At the beginning or After a page; with the latter After page appears, the page of the base document after which they are inserted (0 puts them before everything). The result is named after the two documents joined by + (contract+annex.pdf).
Split / extract
Puts out pages from each selected PDF. The Result variant decides how:
- One PDF with those pages — a single document with the pages from the Pages field, in the order written (
name_p2-6.pdf).
- One PDF per range — one document per comma-separated part:
1-3, 4-8, 9- gives three files.
- One page per file — splits the whole document, one page per PDF (
name_p01.pdf, name_p02.pdf…); the Pages field is not used.
With the field empty and One PDF with those pages you get the document as it was left in the editor: it is the way to download a PDF to which you have only rotated, deleted or reordered pages.
PDF → images
One image per page in the Pages field (empty: all), from the already edited document, drawn with pdf.js. They enter the queue as converted images (name_p01.jpg…), with the Generated label. Controls: Format (JPG is light and works well with photos and scans; PNG is lossless, better for text and crisp drawings, but heavier; WebP sits between the two) and Resolution (72–96 dpi for screen, 150 for comfortable reading, 300 for printing; an A4 at 150 dpi is 1240 × 1754 pixels). Variants: JPG, 150 dpi, PNG, 150 dpi and JPG, 300 dpi (print). If a page is enormous, it is drawn at a lower resolution than requested and a warning is shown.
PDF → Text
One .txt per PDF with the text of the pages in the Pages field. It only reads selectable text: a scanned PDF has none, and then a warning is shown and nothing is generated (run it through Searchable PDF (OCR) first). With several columns or tables, the order may not be the reading order. Variants: Continuous paragraphs (joins the lines of each paragraph) and Lines as on the page. The Mark pages checkbox puts === Page N === before the text of each page, with its number in the PDF.
PDF → DOCX
Approximate conversion: one .docx per PDF with the text of the pages in the Pages field, rebuilt into paragraphs and headings (by font size), with bold and italics. Images, tables and layout are not carried over. A scanned PDF has no text: run it through OCR first. Variants: Continuous text and Keep page breaks (a Word page break where each PDF page ended).
Compress
Recompresses the photos and scans inside the PDF to JPEG; the text and vector drawings stay the same. Variants of Level: Light (85 %, 200 dpi), Balanced (75 %, 150 dpi) and Strong (60 %, 110 dpi). An image is only reduced in resolution if it clearly exceeds the target, and is only replaced if the result weighs less; very small ones (icons, bullets) and whatever cannot be handled are left intact. The final notice says how much it went down and how many images were recompressed. If the document does not weigh less, no file is generated. Output: name_compressed.pdf.
Searchable PDF (OCR)
Each scanned page in the Pages field is drawn, goes through OCR (Tesseract) and gets an invisible text layer on top: the PDF looks and weighs almost the same, but it can be searched, selected and copied. Variants of Language: Spanish + English, Spanish or English. Controls: Reading (300 dpi recognises small print better; 200 dpi is faster and enough for normal text; it does not change the appearance or the weight of the PDF) and Scanned only (leaves pages that already have selectable text as they are, to avoid duplicating the layer). The engine (up to about 9 MB, depending on the languages) is downloaded the first time and stays stored; each page takes a few seconds. Output: name_ocr.pdf.
Equalise size
Each page is fitted, without distorting it and centred, onto a sheet of the chosen size: useful for documents with pages of mixed sizes. Page, Orientation and Margin controls as in Images → PDF. Variants: A4, Letter and A4 with margin. Links and form fields are lost.
Number pages
Writes the page number on each page in the Pages field (empty: all), with the numbering of the edited document and upright even if the page is rotated. Variants of Format: 1, Page 1 of 5 and 1 / 5. Controls: Position (bottom or top; centre, right or left, as the page is seen) and Font (8 to 18 pt, in Exo 2). Output: name_numbered.pdf.
Metadata
Title, author, subject and keywords of each selected PDF. The ones from the first appear in grey. Variants of Mode: Change what is written (only the fields you fill in are touched) and Replace all (empty clears) (empty fields are cleared). The document XMP metadata is removed, so it does not contradict the new values.
Page editor
The eye icon of a PDF in the input opens a grid with its pages in thumbnail (they are drawn as they come on screen, so a document of hundreds of pages opens quickly). From the top bar:
- Mark — a click marks only that page; Ctrl+click or Space adds or removes it; Shift+click marks the stretch from the last pressed; the arrows move the focus. Ctrl+A marks or unmarks all.
- Rotate the marked ones to the left or right (Shift+R / R).
- Move the marked ones one place backwards or forwards (Alt+← / Alt+→), or drag them to their new place.
- Insert blank page after the last marked one (or at the end), the size of the neighbouring page.
- Duplicate and Delete (Del) the marked ones.
- Crop margins of the marked ones (or all of them): opens a bar with Top, Right, Bottom and Left in centimetres, measured over the page as it is seen. Detect suggests the margins by finding the content box. Apply or Enter saves them; Esc cancels; the remove button deletes the crop of the affected pages.
- Undo and Redo (Ctrl+Z / Ctrl+Shift+Z), up to 200 steps, and Reset to return to the original document.
The editing is non-destructive: the file is not rewritten; what pages remain, in what order, with what rotation and what crop is stored, and each operation starts from the resulting document. Close and save keeps the changes; Esc or Close and discard throws them away. The row indicates how many pages the edited document has. To download the edited PDF as it is, use Split / extract with the Pages field empty.
Problematic PDFs and large documents
- Password-protected — it cannot be opened (pdf-lib does not decrypt). Remove the password with another program and load it again.
- Damaged — its internal structure cannot be read; it usually happens with incomplete downloads. Opening it in another viewer and saving it again sometimes fixes it.
- Not a PDF — it does not start with the
%PDF header: probably another kind of file with the extension changed.
- No pages — there is nothing to work on.
These PDFs are marked in their row with the reason and are not selectable. Before working with very large documents (from about 150 MB, or 400 MB on machines with 8 GB of memory or more; with Merge, Merge pages and Insert the sum of all of them counts), confirmation is asked: the browser has to load them entirely into memory and the tab could close. If memory runs out halfway, the notice says so; close other tabs or split the document.
With a batch, a PDF that fails is warned about and does not stop the others.
Recipes
A recipe is a named sequence of up to 12 steps, plus a finishing action. Each step is a tab (Image, Video, Audio, Data, PDF or Rename) with its settings. When you apply it, the app does exactly what you would do by hand: it puts the step's settings in its tab, goes to it and clicks Convert (or Rename), step after step. You see it go through the tabs and each file shows its usual progress.
What a step stores
When you click Add step (or Update step), the recipe copies all the controls of that tab as they are at that moment: format or operation, preset or variant, the format's controls and those of its modals (Scale, Settings, Background, Max size, Upscale, Filters, Audio adjustments…). In Image it also stores which field drives the scale (percentage, width or height). What it does not store is what belongs to each file: crops, rotations, straightenings, erased areas, time trims, PDF page edits or hand-edited metadata. Those stay with each file and the recipe respects them when converting.
When a step is applied, whatever it does not carry (the example recipes only carry what changes) takes the factory value, not the one that was on screen: a recipe gives the same result wherever you use it.
Composing and editing
- New recipe opens the editor: type a name (up to 80 characters; it cannot repeat that of another recipe), choose the tab in Add step and click Add. Set up that tab as usual beforehand.
- Each step shows a readable summary of its settings (for example WEBP · quality 80 · 1920 px wide (max.), or the name of the Data or PDF operation and its variant).
- The pencil of a step closes the window, loads its settings in its tab and shows a strip: change whatever you want and click Update step (or Cancel). In both cases, the tab then returns to the settings it had before editing.
- The arrows or the ⋮⋮ handle change the order; the bin removes the step.
- When finished: Do nothing, Download ZIP (with a single output file that file is downloaded, without a ZIP) or Download one by one.
- Save saves it; Back returns to the list (if there are unsaved changes, it asks before discarding them).
From the list, each recipe has Apply (disabled if it has no steps, if a recipe is already running or if there are no selected files; the tooltip says why), Duplicate, Edit (also by clicking its name) and Delete. Its steps are summarised under the name.
Warnings when composing
The editor marks the steps that will probably not do what you expect (they do not prevent saving or applying):
- Two Image, Video or Audio steps — the second converts the same files again from the original and replaces the result of the first: they do not chain. To combine settings, put them in a single step.
- Two Rename steps — the second renames the same files again.
- Images → PDF without an Image step before it — that operation assembles already converted images, so it needs an Image step before it.
- Recipe without steps.
In Data and PDF there can be several steps, because they usually touch different files (different operations).
What files each step receives
- The recipe is applied to the files selected in the input when you click Apply. With no selection, it warns and does not start.
- Each step works on those files plus what the previous steps of the same recipe have generated (the PDF from Images → PDF, the pages from PDF → images…). So “Scans to PDF” converts the photos in the Image step and the PDF step assembles exactly those.
- Within that selection, each tab only processes what it knows how to process: an Image step ignores audio, an Audio step ignores images. That is why a recipe can handle a mixed queue in one go (“Everything for web”).
- If the recipe has a Video step, its Audio step does not touch the videos: it would extract their audio and replace the video conversion.
- In an Images → PDF step, only the images converted by the recipe itself are assembled, not those that were already converted before.
- A step with nothing to do (no file of its type, no applicable operation) is skipped and it is said at the end.
During and after
- A strip indicates the step in progress (Recipe “…” · Step 2 of 3 · Image) and offers Cancel, which asks for confirmation: what has already been converted stays in the list.
- While it lasts, the pending renaming of the Rename tab is left blank (Convert would apply it): names only change in the Rename steps. The automatic download in Settings does not act either.
- If a guided flow was in progress, it is abandoned.
- When it finishes, all the tabs return to the settings they had, the selection returns to the previous one and you return to the tab you were on.
- A notice summarises the result: output files, errors and steps with nothing to do.
- The finishing action (ZIP or downloads) only includes what the recipe has produced: what it generated and what it converted or renamed. A previous output of a file that no step touched does not go in.
Try with 1 file
From the editor, apply the recipe as it is (even if it is not saved) only to the first selected file and without a finishing action. The window closes so you can see the result; the recipe being edited is parked and you come back to it when you open My recipes.
Apply from the context menu
Right-click in the input list: under Apply recipe your saved recipes appear (up to six; with more, More recipes… opens the window). They are applied to the selection like the Apply button. They are disabled while a conversion or a recipe is running.
Example recipes
Grouped into Image, PDF, Audio and video, Data and Mixed types:
- Lightweight web — WEBP quality 80, 1920 px wide at most, lowercase names, ZIP.
- Photos for email — JPG quality 82, 1280 px wide at most and 500 KB per photo, ZIP.
- Scans to PDF — JPG quality 85 and assembled into a single A4 PDF.
- Merge PDF — the selected PDFs into one, in the order of the list.
- PDF to images — each page as a JPG at 150 dpi, ZIP.
- Audio to MP3 — MP3 VBR V0 with normalised volume, ZIP.
- Extract audio from videos — the audio track of the videos as MP3, ZIP.
- Text from screenshots (OCR) — one .txt per image (Spanish and English), ZIP.
- Everything for web — images to WEBP at 1920 px, videos to WebM 720p and audio to Opus 96 kbps, ZIP.
They are applied as they are or copied to your recipes (with a free name, e.g. “Lightweight web (2)”) to change them.
Importing and exporting recipes
Export downloads your recipes as a JSON; Import adds them to the ones you have. Those that already exist (same identifier) are not duplicated, and invalid entries are discarded and counted in the notice. A file from a newer version of the app is rejected. Recipes also travel in the export of the complete configuration.
Guided flows
Some tasks need to go through two tabs, for example converting images in Image before assembling them into a PDF. Instead of sending you to a tab and having you come back, a guided flow takes you: the Convert button is called Next in the intermediate steps, shows an n/N indicator and its tooltip says what it will do. Everything can be adjusted at each step before continuing. Cancelling a conversion leaves you at the same step; choosing another operation abandons the flow. The state lives only in memory: on reload there is no flow.
Available flows (detailed in the PDF tab): Images → PDF with unconverted images, Merge with images and DOCX → PDF. Each offers a shortcut in its note to do it all in a row with the current settings.
With Step-by-step guided flows disabled in Settings, when a flow starts all its steps run in sequence. The After converting → Download automatically preference only acts on the last step of the flow.
My presets
My presets (the header icon) saves under a name a complete snapshot of the settings of all the tabs at once (Image, Video, Audio, Data, PDF and Rename). When you apply it, the six tabs recover those values in one go. Differences from recipes: a preset does not run anything, it only changes the controls; a recipe chains steps and converts.
- Save — type a name (it cannot be repeated) and save the current settings.
- Apply — click the name.
- Delete — asks for confirmation.
- Export / Import — as JSON; on import, those that already exist are not duplicated.
Do not confuse it with the tab presets (Optimised, Max Quality…), which only change the controls of their tab.
Image viewer and editor
The eye icon of an image in the input opens the full-screen viewer, which is also the editor. The edits are stored in the file (they do not rewrite it) and are applied when converting, before scaling.
- Rotate 90° to the left or right (Shift+R / R) and flip horizontally or vertically (F / Shift+F).
- Crop (C) — drag the frame or its corners. Aspect ratio: Free, Original, 1:1, 4:3, 3:2, 16:9 or 4:5; the rotate button sets the frame to landscape or portrait. You can also type the width and height in pixels. Remove crop takes the frame to the whole image.
- Straighten (S) — rotates by a free angle from −45° to +45°, in tenths (arrows ← →; with Shift, degree by degree). The corners left exposed are filled with a colour, in Auto (the colour of the image's edge) or Transparent (in JPG they come out white). No corners crops to the largest rectangle with the original's proportions that does not touch the corners, and replaces any previous crop.
- Erase areas (E) — drag over the image to cover an area (a number plate, a piece of personal data, a stain) with a colour, or in Auto with the colour around it. Click an area to select it and remove it with Del; another button removes them all.
- In crop, straighten and areas, Apply or Enter saves and Esc cancels.
- Undo and Redo (Ctrl+Z / Ctrl+Shift+Z) and Reset (undoes crop, rotation, straightening, flipping and areas).
- 1:1 toggles actual size (1) and fitted (0); also with a double click. The wheel zooms and you drag to move.
- Previous / next file (Page Up / Page Down) — discards what is not saved.
- Close and save, or Close and discard (Esc).
In video and audio, the viewer is the player with the trim bar (see the Video and Audio tabs); in PDF, the page editor (see the PDF tab).
Before/after comparator
In the viewer of a converted image, Compare with the original (C) overlays the two versions with a divider you drag (or move with ← →). On the left, the original with the same edits and the same resizing but unencoded; on the right, the converted one. So what you see is only the effect of the compression. Zooming and panning affects both layers at once; Fit and 1:1 change the zoom. The bar indicates the change in weight.
Compute SSIM measures the structural similarity between the two (on reduced copies, from 0 to 1) and rates it: indistinguishable (≥ 0.995), good (≥ 0.98), acceptable (≥ 0.95) or visible loss. It is useful for lowering the quality to just before it shows.
Settings
The gear icon in the header opens the global preferences. Only what you change from the default value is saved.
Remember between visits
- Remember the session (loaded files), Save the conversion history and Remember the tab settings. When you switch one off, you are offered the option to delete what has already been saved of that type.
Session
- When opening with a saved session — Ask (a banner at the bottom offers Restore or Discard for a few seconds; if it is hidden without choosing, the session is kept for the next visit), Restore it or Discard it without asking.
- Space to save files (50 MB, 200 MB, 500 MB or 1 GB) — files that do not fit are remembered by name only, without the content, and appear as placeholders when restoring. Lowering the limit does not delete what is already saved.
The session is saved in IndexedDB, on your machine, with the order of the list; generated files come back as generated. As soon as you load new files, the previous session stops counting.
History
- Maximum entries (100, 500 or 2000) — once the maximum is reached, the oldest ones are discarded.
The Conversion history modal (the clock icon in the header) lists the original file, operations, date, output files and downloads. Download exports it and Clear deletes it. With the history disabled, this session's conversions are shown, but they are lost when the page is closed.
Output
- ZIP name — accepts
%date%, %time% and %n%; empty, transformer_YYMMDD.
- After converting — Do nothing or Download automatically (in a guided flow, only on the last step; in a recipe, never: its finishing action rules).
- Pause between downloads (no pause, 250 ms, 500 ms or 1 s) — so the browser does not block multiple downloads.
- Suggest ZIP from (5, 10, 20 or 50 files).
- Output metadata — Clean (recommended), Copy from the original without GPS or Copy all. It only applies to JPEG, PNG and WebP when converting; manual per-file editing always rules.
Interaction
- Preview on hover and Panel speed (fast, normal, slow). It only affects the mouse: the keyboard and clicking still open the panel.
- When loading files — Select them, Do not select them or Select only the new ones (deselects the previous ones).
- Ask for confirmation when deleting.
- Step-by-step guided flows — disabled, it runs all the steps in sequence with the current settings.
Performance
- Warn if more than — memory threshold for the warning before converting large video, audio or PDF: automatic based on the device, 1, 2 or 4 GB, or do not warn.
- Files at a time when loading — automatic, 2, 4 or 8.
- Estimate the output size — disabled, the reference row does not show the estimated size.
Data in this browser
It shows how much each saved thing takes up and lets you delete it separately: saved session, history, user presets, recipes, tab settings, preferences, upscale models (AI), background removal models (AI) and the OCR engine and languages. The models and the engine will be downloaded again the next time they are used.
Reset everything deletes all of the above at once, removes the files from the list (your originals are not touched) and reloads the page.
Exporting and importing configuration
Export configuration downloads a JSON (transformer_config_YYYYMMDD.json) with the tab settings, the user presets, the recipes and the preferences; the history and the session are left out on purpose. It is useful for copying your configuration to another browser or machine. Import configuration reads that file and lets you choose which blocks to apply (checkboxes Tab settings, User presets, Recipes and Preferences). Note: unlike importing from My recipes or My presets, which add, here the imported presets and recipes replace the ones you have.