FlowForge Help Documentation
A complete guide to FlowForge, from renaming files to building forms.
Last Updated: November 12, 2026
Table of Contents
- Getting Started
- Adding Files and Names
- Rename Steps
- Patterns and Photo Dates
- Checking and Renaming
- Tables: Opening and Columns
- Table Steps
- Recipes, Other Tables and Saving
- Email Lists
- Cleaning Rules and the Clean List
- Schema and Types
- The List of Fields
- Forms
- Saved Data and Limits
- Keyboard and Accessibility
- How It Was Checked
- Troubleshooting and Support
1. Getting Started
FlowForge has five tools, each on its own tab under the heading: Rename files, Tables, Email lists, Schema and types, and Forms. Beside the tabs, the question mark button opens a short help window. Everything happens on this page; nothing is uploaded and there is no account. You can drop a file or a folder on the page, and the tool on screen opens it. The tools pass work to each other: Use in another tool turns a table into a schema or a form, a column of emails opens in Email lists, form answers and the clean email list open in Tables, and a schema becomes a form.
2. Adding Files and Names
Choose folder lists every file in a folder and, unless you untick Include files in folders inside it, its sub-folders (folders whose names start with a dot are skipped). Add files adds chosen files to the list, and dropping files or a folder on the page does the same. Type or paste names takes one name per line, with a folder in front (photos/IMG_2041.JPG) to keep files in different folders apart; with names alone you get a script or a list rather than renamed files. Up to 20,000 files or names fit in one list; a typed name longer than 1,000 characters is left out, and system files such as Thumbs.db, desktop.ini and .DS_Store are left out of a folder. Only rename files that match takes parts such as *.jpg; *.png (a part without * or ? matches names that contain it, and .jpg matches names that end with it). The order of the list, used for numbers, can be as added, by name, date changed, date taken, size or type, and reversed.
3. Rename Steps
Add a step with Add a step, or choose Ready-made: Photos by date taken, Tidy for the web, Number in order, Remove copy marks, Add today's date or Lowercase everything. Save these steps keeps your own set (up to 100 sets). Each step has a switch to turn it off, a menu to move, copy or remove it, and a line saying how many names it changed.
- Replace text: every match, the first or the last; in the name, the extension or the whole name; with or without matching capital letters; as a pattern (regular expression), whose bracketed parts can be used as $1 and $2.
- Add text: at the start or end, after a number of letters (a minus number counts from the end), or before or after other text.
- Remove: copy marks such as (1), [2] or - Copy (also in German, French, Spanish, Italian and Finnish), text in brackets, the first or last letters, letters from a position, text between two marks, all numbers, or symbols.
- Change case: lowercase, UPPERCASE, Title Case, Sentence case, camelCase, PascalCase, snake_case or kebab-case.
- Number: at the start, the end or instead of the name, starting at and counting by any number, with 0 to 9 digits, joined with your text, and again in each folder if you like.
- New name from a pattern: see the next section.
- Tidy up: trim spaces, dashes and underscores at the ends, make repeated ones single, remove accents, turn spaces into _ or - or nothing, make names safe for Windows or for web addresses, and cut names to a longest length.
- Extension: lowercase, uppercase, tidy (jpeg, jpe and jfif to jpg, tiff to tif, htm to html, mpeg to mpg, 7zip to 7z), change it or remove it.
4. Patterns and Photo Dates
A pattern builds each new name from parts in curly brackets, and the buttons under the box insert them: {name} (the name now), {original} (the name before the steps), {n} and {n:3} (a number, with 3 digits; at most 9), {taken:YYYY-MM-DD} (the date the photo was taken), {modified:YYYY-MM-DD} (the date the file was changed), {today:YYYY-MM-DD}, {folder}, {width}x{height} (the picture size in pixels), {camera}, {size} and {ext}. Dates can be written with YYYY, YY, MMMM, MMM, MM, M, DD, D, dddd, ddd, HH, hh, mm, ss and A, and words in [square brackets] stay as they are. The date taken, the size and the camera are read from the start of each JPEG, PNG, GIF or WebP photo only when a step or the order needs them; a photo without a date taken uses the date the file was changed. An upright phone photo is read as upright.
5. Checking and Renaming
The list shows every name, old and new, with what was removed and what was added; filter it to Changing, Problems or Unchanged, and click the pencil to type one name yourself (typed, with a button to use the steps' name again). Empty names, a / in a name, names longer than 255 bytes, and names that clash with another new name or with a file that keeps its name are problems: those files are left as they are. Characters Windows does not allow, a dot or space at the end, names Windows keeps for itself (such as CON or LPT1) and names starting with a dot or a space get a warning.
In Chrome and Edge on a computer, with a folder chosen through Choose folder, Rename N files in the folder renames the files after you confirm, and Undo puts the old names back straight afterwards. Swaps and changes of capital letters only go through a temporary name, so no file is overwritten. Download renamed copies makes a zip of the files with their new names (stored, not compressed; up to 65,000 files and about 4 GB, and it asks before making one over 1.5 GB). Get a rename script gives a script for Windows PowerShell, the Command Prompt or Mac and Linux, or an undo script: save it in the folder you chose and run it. It lists every rename and changes nothing until you type YES; a Windows script leaves out names Windows does not allow. List as CSV saves the folder, old name and new name of every rename. The last folder you chose is remembered by the browser, and Open it again asks the browser for access once more.
6. Tables: Opening and Columns
Open file reads CSV, TSV, text, Excel .xlsx (choose the sheet), JSON, Markdown and HTML files of up to 50 MB; Paste a table takes cells copied from Excel or Google Sheets, or pasted CSV, Markdown, HTML or JSON. The separator and whether the first row names the columns are found for you, and First row and Separator set them by hand. A list of JSON records becomes one row per record, with nested names such as address.city as columns. Up to 200,000 rows, 1,000 columns and 4,000,000 cells are read; a bigger table is cut to fit, and a note says so. Each column shows what it holds (number, date, email, web address, phone, yes/no, text or empty) and how much of it is filled. Click a column name for what you can do with it.
7. Table Steps
- Columns: split a column (at every separator, at the first or last one only, a person's name into first, middle and last, after set letter counts, or into rows, one per part), join columns, a new column from a pattern such as {City}, {Country} or {#} for the row number, rename, remove or keep only some columns, and move a column.
- Cells: clean up spaces (ends, repeats, line breaks, hidden characters), change case, find and replace (whole cells only, matching capitals, or a pattern), pull out part of a column (an email, a domain, the first number, the digits, a web address, the text before or after a mark, or what a pattern finds), fill empty cells from above or with text, format dates, clean numbers and clean phone numbers (with a country code for numbers without one).
- Rows: keep or remove rows where a column contains, is, starts or ends with a text, is empty or not, is a number above or below, a date before or after, an email address, or matches a pattern; remove duplicate rows (by every column or some, ignoring capitals and spaces if you like, keeping the first or the last); sort by one column, then another (numbers and dates sort as numbers and dates); remove empty rows and columns.
- Other tables: look up columns from a second table where a column matches, and add the rows of another table.
Steps run from the top. Click a step's number to see the table at that point, with new columns and changed cells marked; Show the end result goes back. A step that cannot run says why, and the steps after it carry on. A table takes up to 50 steps. A pattern that takes very long on some text could make the page stop; if that happens, the next time the page opens the steps with patterns are switched off, and a note says so.
8. Recipes, Other Tables and Saving
Recipes saves your steps under a name (up to 100) and runs them on another table; when you open a new file with steps in place, the tool asks whether to keep them. Look up and Add rows use other tables opened with Open a table in the step (up to 10; Close forgets them with the table). Save the result writes CSV (comma, semicolon, tab or bar, with or without the mark that makes Excel show every letter correctly), Excel, JSON (a list of records, a list of rows or JSON Lines; numbers and yes/no as values and empty cells as null if you like; names such as address.city as nested records), Markdown, HTML or SQL (CREATE TABLE with types worked out from the data, then INSERT statements of 500 rows each; standard SQL, see the FAQ for MySQL). Copy for Excel copies the table with tabs, ready to paste. Split into files makes one CSV or Excel file per value of a column or per so many rows, downloaded together as one zip of up to 5,000 files.
9. Email Lists
Paste addresses in any form into Your list, open a text, CSV, Excel or contacts file, or drop one. Addresses are found one per line, separated by commas or semicolons, in Name <address> form, in a spreadsheet column headed Email (the Name, or First name and Last name, columns come along), in a contacts file, as mailto: links, and written out as name [at] example [dot] com. Each address is checked on your device: one @, something before and after it, no spaces or characters that are not allowed, at most 64 characters before the @ and 254 in all, a domain with valid parts, and a domain ending from IANA's list of 1,436 endings (12 November 2026). Only the written address is checked: no mail server is asked, so a mailbox that does not exist is not found. Up to 50,000 addresses are checked in one list, and up to 2,000,000 characters are read.
10. Cleaning Rules and the Clean List
- Fix likely typos: a doubled @, extra dots, well-known mail domains with a slip or two (gmial.com, hotmial.com), a missing ending, and endings that do not exist close to common ones (.con). Each fix is shown; Undo fix keeps the address as written.
- Write addresses in small letters and Find addresses written out to fool robots.
- Duplicates: Remove repeats (the same address in any mix of capitals), Also the same person (Gmail ignores dots and anything after a +, and googlemail.com is gmail.com), or Keep all.
- Leave out throwaway addresses (111 well-known services) and Leave out shared addresses (info@, sales@, support@, noreply@ and 58 more).
- Do-not-send list: addresses or @domains to remove, or Keep only these.
Every address shows as Ready, Fixed, Not valid (with the reason), Duplicate or Left out; edit one with the pencil, or take one out by hand. Top domains counts them, and a click filters the list. Your clean list writes the ready addresses one per line, separated by commas or semicolons (Outlook), with names for the To box, as CSV with names, JSON or a contacts file; as found, A to Z or by domain; and in groups of any size for sending in batches. Email them (Bcc) opens your own email program with up to 50 addresses. Open as a table sends every address with its status to Tables.
11. Schema and Types
Paste what you have and choose how to read it (Find out, Example JSON, CSV or a table, List of fields, JSON Schema), or open a file of up to 50 MB. From examples the tool learns which fields every example has, the kind of value in each, formats (date and time, date, time, email, web address, UUID, IP addresses) and short lists of choices. The settings choose whether a list is many examples of one record or the record itself, which fields are required (in every example, all, none), and whether to keep lists of choices, formats, an example value, a description from each field name, the lowest and highest values seen, and allow no other fields. Name of the record becomes the title and the type name. Write as gives the JSON Schema (2020-12 or draft 7), TypeScript, Zod (for Zod 3 and 4), Pydantic (for Pydantic 2) or Example data (1 to 200 records made up from the field names and rules, with New examples for another set). Copy, Download, Make a form from it and Open as a table work on what is shown. Check data against this schema shows each problem with where it is, such as /address/city; a check stops after 200 problems, or when a schema and data would take too long to check fully, and says so.
12. The List of Fields
Write one field per line: a name, a colon and a type, such as email*: email or age: whole number 18-120. A star or ! after the name means required and ? optional, or write required or optional. Types: text, long text, whole number, number, yes/no, date, time, date and time, email, link, uuid, phone, rating, consent (must be ticked), group and any. one of a, b, c (or a | b | c) is a list of choices and many of a, b, c lets several be chosen; list of text (or text[]) is a list. Limits are written as 18-120, between 1 and 5, min 2, at least 2, max 80 or at most 80; also default is, example, pattern /^[0-9]{6}$/ and unique. Words after # describe the field. A line indented under a field with no type makes that field a group, and list of group with indented lines makes a repeating group. A line longer than 1,000 characters is left out, with a note.
13. Forms
Pick one of six starting points (Contact us, Event sign-up, Job application, Bug report, Feedback, Order form) or Start with an empty form. Fields lists every field with its label, kind and Required box; the arrow opens its details (help text, an example, choices, shortest and longest, lowest and highest, at least and at most, a pattern with its message, must be ticked, the name in the data) and the menu moves, copies, removes or makes a field half width. Groups and repeating groups have fields of their own. As JSON Schema edits the form as a schema, and Settings holds the title, the text under it, the button's label and what happens after an answer is saved here. The form on the right works as you build it: required fields, limits, patterns and formats are checked, and a summary points at each answer that needs a look. Pressing the button saves an answer in this browser; answers collect into a table you can download as CSV, Excel or JSON, open in Tables, or clear. Save as a web page gives one HTML file that needs nothing else: it checks every answer by itself, then shows the answers (which the person can copy or save), sends them as JSON to an https address of your own, or opens the person's email program with the answers written in. Without a whole https address or email address it shows the answers. This site never sees the answers. A form holds up to 2,000 fields.
14. Saved Data and Limits
The settings, steps and recipes of all five tools are kept in this browser's local storage under bulk-file-renamer-state; the open table and the other tables, the email list, the Schema tool's text, the form answers and the last folder you chose are kept in the browser's database named bulk-file-renamer. Nothing is kept until you change something, and everything is checked value by value when it is read back. Close in Tables, Clear in Email lists and Clear under the form answers remove what each keeps; clearing this site's data in your browser removes all of it.
- Rename files: 20,000 files or names; steps 50; saved sets of steps 100.
- Tables: files up to 50 MB (an Excel file may unpack to 64 MB); 200,000 rows, 1,000 columns, 4,000,000 cells; 50 steps, 100 recipes, 10 other tables; 5,000 files when splitting.
- Email lists: 50,000 addresses and 2,000,000 characters.
- Schema and types: 5,000,000 characters, nesting up to 100 levels; examples up to 50 items in a list and 1,000 characters in a text.
- Forms: 2,000 fields; 5,000 answers kept.
15. Keyboard and Accessibility
Every button and box can be reached with Tab. While you are using the tool (after a click or a tap in it, or while it fills the screen), 1 to 5 switch tools and ? opens the help window; the site's own keys and the browser's are left alone. Alt with the up or down arrow moves a step, the arrow keys move through menus and choices, and Escape closes menus and windows. Messages are announced to screen readers, and the table and the lists can be scrolled with the keyboard.
16. How It Was Checked
Before publishing, the tool's calculations were compared with separate programs written from the rules on this page: 171,201 cases in 15 groups, among them every rename step and pattern, the name checks, the scripts run on files with hostile names, dates, numbers and phone numbers, every table step against a reference, CSV against a standard CSV reader, Excel files read back by a spreadsheet library and Excel files made to break the reader, the email checks and fixes, JSON Schema checked by a standard validator, TypeScript and Python output compiled, saved forms, saved data made to break the tool, and long and hostile input. The page itself was then tested in a browser on phones and computers in both themes. The original version let a column or field named __proto__ change every object on the page, could run commands from a typed name in its Command Prompt script, took seconds to minutes on some long texts and cells, could unpack a small Excel file into gigabytes, built a name of a hundred million characters from {n:100000000}, never checked phone numbers in a saved form, and stopped on a schema that refers to itself; that is fixed.
17. Troubleshooting and Support
- There is no Rename in the folder button. It needs a folder chosen through Choose folder in Chrome or Edge on a computer. Otherwise download renamed copies or use a script.
- Some files were left as they are. Their new names have a problem (shown in red): a clash, an empty name or one that is too long.
- Windows blocks the PowerShell script. Open PowerShell in that folder and run: powershell -ExecutionPolicy Bypass -File rename.ps1
- An .xls file will not open. Open it in Excel and save it as .xlsx or CSV.
- Dates came out with day and month swapped. In Format dates, set 03/04/2025 means to 3 April or March 4.
- My steps with patterns were switched off. The page stopped while one of them was working last time. Check the pattern, then switch the step on again.
- A real address shows as not valid. Edit it with the pencil; the reason under it says what was found.
For questions the FAQ does not answer, use the contact form.