Remove Duplicate Lines
Paste text or open a file and every repeated line is removed as you type. Keep the first or the last copy, ignore case, spaces or punctuation, compare one CSV column, and see exactly which lines went. Nothing leaves your browser.
- Free, no sign-up
- Keeps the original order
- Keep first or last
- Shows removed lines
- Works with large files
- Nothing uploaded
People also use
How to clean a list of repeats in three steps
Paste a list into the left box and the right box shows it again with every repeat taken out. The order stays as it was, the first copy of each line stays where it was, and four counters tell you how many lines came in, how many were kept, how many duplicates were removed and how many different lines repeated. This is a quick way to remove duplicate lines when you have a list of names, emails, URLs, keywords, log entries or anything else that came from more than one source.
The settings sit under the two boxes. They decide what counts as the same line (case, spaces, punctuation, one column), which copy you keep (first or last), whether empty lines go, whether the result is sorted, and what separates the items (new lines, commas, semicolons, tabs, spaces or a character you type). Every change updates the result at once.
Below the settings you get two lists that most tools do not show: the most repeated lines with how many times each one appears, and every removed line with its line number and the line it was a copy of. So you can check the work instead of trusting it.
- 1
Paste or open your text
Paste into the Your text box, or press Open a file and pick a .txt, .csv, .tsv, .log or .md file. Each line is one item unless you choose another separator.
- 2
Choose what counts as the same
Tick Ignore upper / lower case, Treat several spaces as one or Ignore punctuation if needed, pick Keep first or Keep last, and set a column for CSV rows.
- 3
Copy or download the result
The Result box updates as you type. Press Copy, Download (a .txt file) or Use as input to run another pass on the clean list.
Your settings are remembered in this browser for next time. The text you paste and the files you open are never saved or sent anywhere.
Remove duplicate lines online, right in your browser
Most people who need this are in the middle of something else: a mailing list that was merged twice, a keyword export with the same phrase on several rows, a log with the same error a thousand times. Opening a spreadsheet or writing a script for that is slow. Here you paste, look and copy, and the job is done in seconds.
Because the tool runs as a web page, you can remove duplicate lines online from any computer with a modern browser, with nothing to install and no account. The work itself is done by JavaScript on your own device, which is why the result appears while you type and why your text does not travel to a server.
The page keeps no history of what you pasted. If you close the tab, the text is gone. Only your choices, such as Keep first or the separator, are stored in the browser so the page opens the way you left it.
Remove duplicate lines from text pasted from anywhere
Plain text is the simplest case. Every line break starts a new item, so a list copied from a document, a chat, an email or a web page works as it is. Paste it into Your text and the Result box shows the clean list straight away, with one copy of each line.
When you remove duplicate lines from text that was copied from different places, small differences often hide repeats. One line ends with a space, another starts with two, a third uses a capital letter. By default the tool ignores spaces at the start and the end of a line, so “apple” and “apple ” already count as one. The other differences are covered by the options in the next section.
The result keeps each line exactly as it was written in its first appearance (or last, if you choose Keep last). Nothing is lowercased, trimmed or changed in the output; the options only change how lines are compared, not how they look.
Remove duplicate lines case insensitive, and other matching rules
Four check boxes under What counts as the same decide when two lines are treated as one. You can combine them freely, and the counters update at once so you can see what each one changes.
If you need to remove duplicate lines case insensitive, tick Ignore upper / lower case. Then “Paris”, “paris” and “PARIS” are one line, and the copy you keep is shown with its original capital letters. This is the setting most people want for names, email addresses and tags, where capitals are an accident rather than a difference.
Ignore spaces at the start and end is on by default, because trailing spaces are invisible and almost never meant. Treat several spaces as one goes further and turns any run of spaces or tabs inside the line into a single space, so “New York” matches “New York”. Ignore punctuation removes everything that is not a letter, a digit or a space before comparing, so “Hello, world!” matches “Hello world”. Letters with accents and letters from any script count as letters.
| Option | Default | Effect | Good for |
|---|---|---|---|
| Ignore upper / lower case | Off | Apple and apple are one line | Names, emails, tags, keywords |
| Ignore spaces at the start and end | On | “apple” and “apple ” are one line | Lists copied from documents or the web |
| Treat several spaces as one | Off | “New York” and “New York” are one line | Text from PDFs, aligned columns |
| Ignore punctuation | Off | “Hello, world!” and “Hello world” are one line | Sentences, titles, song or book lists |
| Compare only column N | 0 (whole line) | Only that field of each row is compared | CSV rows with a key such as an email |
Remove duplicate lines without sorting: keep first or keep last
Many quick methods sort the list first, because sorted repeats sit next to each other and are easy to drop. That changes the order of your data, which is often not acceptable: a ranked list, a playlist, a timeline or a log must stay in its original sequence.
This tool does not need to sort. With Keep first, the first time a line appears it stays in place and every later copy is dropped. With Keep last, the last copy stays where it is and the earlier ones go, which is useful when later rows are newer, such as an updated address further down an export. Either way you remove duplicate lines without sorting anything, and the Sort the result menu stays on No (keep order) unless you change it.
Which one should you choose? Keep first suits most lists, because the entry you saw first is usually the one you want and the order reads naturally. Keep last suits data that grows over time, such as a sign-up sheet where people corrected their details further down, or an export where every change adds a new row at the end. The position matters too: with Keep last the kept line stays where its last copy was, so the result follows the order of the latest entries.
If you do want an ordered list, Sort the result offers A → Z and Z → A, applied after the duplicates are removed. In the Every line with its count view there is also Most repeated first.
Four views: unique, only duplicates, once, with counts
The Show buttons at the top switch between four results from the same input. You do not need to paste again; the text stays and only the right box changes.
| Show | What you get | Use it for |
|---|---|---|
| Unique lines | One copy of every line, duplicates removed, in the original order | Cleaning a list before you use it |
| Only duplicates | One copy of each line that appears more than once, most repeated first | Finding which entries were doubled |
| Lines that appear once | Only lines with no copy anywhere in the input | Finding entries that are in one list but not the other |
| Every line with its count | Each line with the number of times it appears, separated by a tab | Frequency counts, tallies, simple reports |
Lines that appear once is handy for comparing two lists. Paste both lists one after the other: lines that are in both appear twice and drop out, and what remains is the set of lines found in only one of them, as long as neither list repeats lines on its own. For a line-by-line comparison that shows where two texts differ, the Diff Checker is the better tool.
Every line with its count puts the number first and the line after a tab, so you can paste the result into a spreadsheet and get two columns. Choose Most repeated first in Sort the result to turn it into a ranking.
Remove duplicate lines from a file, even a large one
Press Open a file above Your text to load a .txt, .csv, .tsv, .log or .md file from your device. The file name appears next to the label, the text fills the box, and the result appears as usual. When you press Download, the cleaned file is saved as the original name with “-deduped” added, as a .txt file.
To remove duplicate lines from a file of several megabytes, nothing special is needed. The file is read by your browser and processed in memory, so its size is limited by your device rather than by an upload limit. While the text is up to about 3 million characters (roughly 3 MB of plain text), the result updates live as you change settings. Above that, a red Remove duplicates button appears under the text box, so the page does not redo the whole job on every click; change your settings first, then press it.
Line endings from Windows (CR LF), macOS and Linux (LF) and old Mac files (CR) are all recognised as line breaks, so files from any system split correctly. The output uses plain line feeds.
Remove duplicate lines from CSV rows, or by one column
A CSV row is one line, so whole-row duplicates are removed like any other line. Keep Ignore spaces at the start and end on and exact repeated rows disappear, with the header row kept because it appears only once.
Often the rows are not exact copies: the same customer appears twice with a different date or note. For that, set Compare only column to the number of the column that should be unique, counting from 1, and set split by to the separator of your file (a comma for CSV, a semicolon for many European exports). Now only that field is compared, and the first (or last) row for each value is kept whole. Column 0 means the whole line is compared.
This is the way to remove duplicate lines from csv data by email, ID, SKU or URL. One honest limit: the column is found by a plain split on the separator, so a field that itself contains the separator inside quotes, like “Smith, John”, shifts the columns. If your file has quoted commas, compare by a column that comes before them, or convert the file with CSV to JSON and back with JSON to CSV after cleaning.
| Goal | Compare only column | split by | Result |
|---|---|---|---|
| Exact duplicate rows | Column 0 | Any | Rows that match in every field |
| Same email in column 2 | Column 2 | , | Keeps the first row for each email |
| Latest row per ID in column 1 | Column 1 + Keep last | , | Keeps the newest row when later rows are newer |
| Semicolon CSV, SKU in column 3 | Column 3 | ; | Common in European exports |
| Tab separated (TSV), key in column 1 | Column 1 | Tab: paste a tab character | Spreadsheet copy and paste |
Remove duplicate words, commas and other separators
Duplicates are not always on separate lines. Under Items are separated by you can choose New lines, Commas, Semicolons, Tabs, Spaces (words) or Other, where you type any separator such as a pipe. The same rules then apply to each item, and the result is joined back with the same kind of separator: a comma and a space for commas, a semicolon and a space for semicolons, and a single space for words.
Pick Spaces (words) to remove duplicate words from a sentence, a tag list or a list of keywords typed on one line. Any run of spaces, tabs or line breaks counts as one separator. Words with punctuation attached, such as “word,” and “word”, are different items unless you also tick Ignore punctuation, and Ignore upper / lower case makes “The” and “the” the same word.
With commas selected, a line such as “red, blue, red, green” becomes “red, blue, green”. The spaces after the commas do not matter, because spaces at the start and end of each item are ignored by default. To count how many words a text has before and after, use the Word Counter.
| Items are separated by | Splits at | Result is joined with | Typical text |
|---|---|---|---|
| New lines | Each line break | One item per line | Lists, logs, CSV rows |
| Commas | Each comma | A comma and a space | Tags, values typed on one line |
| Semicolons | Each semicolon | A semicolon and a space | Email address lists from mail apps |
| Tabs | Each tab | A tab | One row copied from a spreadsheet |
| Spaces (words) | Any run of spaces, tabs or line breaks | A single space | Words in a sentence or keyword string |
| Other | The exact text you type, such as | or :: | The same text | Pipe-separated values and custom formats |
Remove duplicates from list data: emails, names, URLs, keywords
Most lists that need cleaning come from somewhere else: two exports joined together, contacts from several devices, keywords from different research tools, links collected over weeks. The table below shows settings that work well for common cases.
If you need to remove duplicates from list data before an import, check the Lines that repeat counter first. If it is higher than you expected, switch to Only duplicates to see which entries were doubled; if it is lower, one of the What counts as the same options is probably needed.
| List | Settings | Why |
|---|---|---|
| Email addresses | Ignore upper / lower case on | Capitals in emails are almost never meaningful |
| Names | Ignore upper / lower case, Treat several spaces as one | Catches “Anna Smith” and “anna smith” |
| URLs | Defaults | Paths can be case sensitive, so leave case on |
| Keywords | Ignore upper / lower case, Ignore punctuation | Treats “seo tips” and “SEO tips!” as one |
| Log lines | Every line with its count, Most repeated first | Shows which messages repeat most |
| Product codes | Defaults | Codes like AB-12 and AB12 should stay different |
Delete duplicate lines online on a phone, tablet or computer
The page works the same on a phone, a tablet and a computer. On a small screen the two boxes stack, with Your text above the Result, and the settings follow below. On a wide screen they sit side by side.
On a phone, long-press inside Your text and choose Paste, then press Copy above the result and paste it where you need it. Open a file uses the phone's file picker, so you can load a text file from downloads or a cloud folder. This makes it easy to delete duplicate lines online from a list someone sent you in a chat, without waiting until you are at a computer.
Remove duplicate lines free: no sign-up, no limits
The tool is free to use, with no sign-up, no limit on how many times you use it and no watermark or added text in the output. Because the work is done on your device, there is no server cost per job, so there is no daily quota to run into.
You can remove duplicate lines free from small lists and large files alike. The only practical limit is the memory of your device: a modern computer handles files of many megabytes, while an older phone may slow down on very large ones.
Command-line equivalents: sort -u, uniq, awk and PowerShell
If you work in a terminal, the same jobs can be done with built-in commands. Each one has its own rules about order and case, which is worth knowing before you choose. The table below compares them with the options on this page.
sort -u sorts the input and keeps one copy of each line, so the original order is lost. uniq only removes repeats that sit next to each other, which is why it is almost always used after sort; uniq -c adds counts, uniq -d shows only the repeated lines and uniq -u only the lines that appear once. awk '!seen[$0]++' keeps the first copy of each line and keeps the order, and awk '!seen[tolower($0)]++' does the same while ignoring case.
In PowerShell, Get-Unique compares each line only with the one before it, so it needs sorted input, the same as uniq. Sort-Object -Unique sorts and removes repeats, ignoring case by default, and Select-Object -Unique keeps the original order. All of these are fine tools; this page is simply quicker when the text is already on your screen, and it shows you what was removed.
| Command | Order | Case | Same as here |
|---|---|---|---|
| sort -u file.txt | Sorted | Case sensitive (add -f to ignore case) | Unique lines in sorted order |
| sort file.txt | uniq -c | Sorted | Case sensitive | Each line with its count |
| awk '!seen[$0]++' file.txt | Kept | Case sensitive | Same as Unique lines with Keep first |
| awk -F, '!seen[$2]++' file.csv | Kept | Case sensitive | Same as Compare only column 2 split by , |
| Get-Content file.txt | Sort-Object | Get-Unique | Sorted | Case sensitive | Get-Unique alone needs sorted input |
| Get-Content file.txt | Select-Object -Unique | Kept | Case sensitive | Unique lines in original order |
Removed lines and most repeated lines
When at least one line repeats, two lists appear under the settings. Most repeated lines shows up to 100 lines that appear more than once, each with its count, the most frequent first. It is a quick way to see what dominates a log, a survey answer list or a keyword export.
Removed lines lists every copy that was dropped (the first 300 are shown), with its line number on the left and “same as line N” on the right, where N is the line that was kept. If you chose another separator, the numbers count items instead of lines. This list is the easiest way to check that the options did what you meant, for example that Ignore punctuation did not merge two lines you wanted to keep.
Empty lines are counted separately. With Remove empty lines ticked, the label shows how many blank lines were dropped, and they do not appear in the removed list. Untick it to keep blank lines, in which case all blank lines after the first count as duplicates of it.
The four counters above the boxes give the same story in numbers. Lines in is every item in your text, blank ones included. Kept is the length of the clean list in the Unique lines view. Duplicates removed is how many copies were dropped, and Lines that repeat is how many different lines had at least one copy. If Kept plus Duplicates removed is less than Lines in, the difference is the blank lines that were dropped.
How the comparison works
For every line the tool builds a comparison key. It starts from the whole line, or from one column if you set Compare only column. Then, in this order, it trims spaces at the start and end, turns runs of spaces into one space, strips punctuation and lowercases the text, each step only if its option is ticked. Two lines are duplicates when their keys are equal.
In a first pass the tool counts how often each key appears and notes where it appears first and last. In a second pass it walks through the lines again: a line is kept if it sits at the remembered first position (Keep first) or last position (Keep last) for its key, and otherwise it goes to the Removed lines list together with the number of the line that was kept. Both passes look at each line once, so the time grows in step with the size of the text rather than exploding on long lists.
The key is only used for comparing. What you see in the result is always the original line, with its own capitals, spaces and punctuation. When several lines share a key, the one shown in Only duplicates, Lines that appear once and the count view is the first one that appeared.
Empty lines are handled before any of this. With Remove empty lines ticked, lines that are blank or contain only spaces are skipped completely, so they are neither counted nor listed as removed.
Worked examples
A merged contact list
Two exports of the same address book are pasted one after the other. With Ignore upper / lower case ticked, “[email protected]” and “[email protected]” become one line, and the counters show how many contacts were in both exports.
Newest row per customer
A CSV export lists every order, one row each, with the customer email in column 3. Set Compare only column to 3, split by a comma, and choose Keep last. You get one row per customer, the most recent one, still in the original order.
A noisy server log
Paste a few thousand log lines and choose Every line with its count with Most repeated first. The top of the result shows which messages fill the log. Most repeated lines under the settings shows the same ranking for a quick look.
Tags typed on one line
A post has “travel, food, Travel, photography, food” as tags. Choose Commas and tick Ignore upper / lower case: the result is “travel, food, photography”.
Two guest lists
Paste the list from one organiser and then the list from the other, and choose Lines that appear once. Names on both lists drop out, and what is left are the people only one organiser invited.
Keyword research
Keyword lists from several sources often differ only in punctuation or capitals. Tick Ignore punctuation and Ignore upper / lower case, then sort the result A → Z to group similar phrases together.
Working with spreadsheets and text editors
Spreadsheet apps have their own commands for repeated rows, but a quick paste is often faster when you only need one column cleaned. Select the column, copy it, paste it into Your text, and each cell arrives as one line. Press Copy above the result and paste it back into an empty column. Because Keep first keeps the order, the rows that remain line up with what you expect.
When you copy several columns from a spreadsheet, the cells in each row are separated by tabs. To compare by one of them, set Compare only column to its number and type a tab character in split by (copy one from your pasted text if your keyboard will not type it into the box). The whole row, with all its columns, is kept, so you can paste it straight back.
Text editors and word processors are handled the same way: copy the text, paste it in, copy the result back. If the text was written with soft line breaks or long paragraphs, each paragraph is one line here, so whole paragraphs are compared.
What people use it for
Mailing lists
Merge two exports and keep one row per email with Compare only column and Ignore upper / lower case.
Keyword research
Join keyword lists from several sources and drop repeats before grouping them.
Log files
Use Every line with its count to see which errors repeat most, or Unique lines to read each message once.
Code and config
Clean a list of imports, hosts, IP addresses or allowed domains that grew by copy and paste.
Spreadsheets
Paste a column from a sheet, dedupe it and paste it back; the order stays the same with Keep first.
Comparing two lists
Paste both and choose Lines that appear once to see entries that are only in one of them.
Tags and hashtags
Choose Spaces (words) or Commas and remove repeated tags from one line of text.
Survey answers
Count identical answers with Every line with its count and Most repeated first.
Tips for a clean result
Start with the defaults and look at the four counters before ticking more options. Each option makes more lines match, so it is easier to add them one at a time and watch Duplicates removed grow.
Use the Removed lines list as a check. If a line you wanted to keep appears there, read the “same as line N” note, scroll to that line in your text and compare the two.
Keep a copy of the original until you are sure. Use as input replaces the text in the left box with the result, which is handy for a second pass, but the original is then gone from the page.
Clean before you count. If you want to know how many different entries a list has, the Kept counter is that number once the options match how you think about your data.
For CSV files with a header row, the header appears only once and is kept, so the file stays valid. If two files with the same header were joined, the second header is removed as a duplicate of the first.
Troubleshooting: when the result is not what you expected
Two lines look the same but both stay
They differ in something you cannot see: a different kind of space, a capital letter or a mark. Tick Treat several spaces as one, Ignore upper / lower case and Ignore punctuation one by one and watch the counters.
Too many lines were removed
An option merged lines you wanted to keep. Open the Removed lines list, find the line, and check which option made it match the kept line. Ignore punctuation is the usual cause.
The CSV rows do not match by column
Check the separator in split by and the column number, which counts from 1. Quoted fields that contain the separator shift the columns.
The whole text is one item
The separator does not match your text. Choose New lines for one item per line, or the separator your list really uses.
The result does not update
Above about 3 million characters the page stops updating live. Press the red Remove duplicates button under the text box after changing settings.
The order changed
Sort the result is set to A → Z or Z → A, or the Only duplicates view is open, which lists the most repeated lines first. Choose No (keep order) and Unique lines.
All settings at a glance
| Setting | Choices | What it does |
|---|---|---|
| Show | Unique lines, Only duplicates, Lines that appear once, Every line with its count | Which result the right box shows |
| Ignore upper / lower case | On or off | Compares lines without regard to capital letters |
| Ignore spaces at the start and end | On (default) or off | Leading and trailing spaces do not count |
| Treat several spaces as one | On or off | Runs of spaces and tabs count as one space |
| Ignore punctuation | On or off | Only letters, digits and spaces are compared |
| Compare only column | 0 (whole line) or a column number, plus a separator | Compares one field of each row |
| Keep | Keep first or Keep last | Which copy of a repeated line stays |
| Remove empty lines | On (default) or off | Drops blank lines and shows how many |
| Sort the result | No (keep order), A → Z, Z → A, Most repeated first (count view only) | Order of the output |
| Items are separated by | New lines, Commas, Semicolons, Tabs, Spaces (words), Other | What one item is |
Is it safe? Done in your browser, nothing uploaded
Everything happens inside your browser tab. The text you paste and the files you open are read by the page on your device and are not uploaded, which matters when the list holds customer emails, phone numbers or internal data.
The page stores only your settings, in your browser's local storage, so it opens with the same options next time. Clearing your browser data removes them. The text itself is never stored.
What to do next
Once the list is clean, you may want to order it in more ways than A → Z: Sort Text sorts by natural order, numbers, length, last word or a column, and can remove repeats at the same time. To see what changed between the original and the cleaned version, paste both into the Diff Checker.
For data you will import elsewhere, JSON to CSV and CSV to JSON convert between the two formats, and the Word Counter counts words, characters and lines in any text.
Frequently asked questions
How do I remove duplicate lines online?
Paste your text into the Your text box or open a file. The Result box shows the list with one copy of each line straight away. Press Copy or Download to take the clean list.
How do I remove duplicate lines from text copied from different places?
Paste it as it is. Spaces at the start and end of lines are ignored by default, and you can also ignore case, extra spaces inside lines and punctuation, so near-identical lines count as one.
Can I remove duplicate lines from a file?
Yes. Press Open a file and choose a .txt, .csv, .tsv, .log or .md file from your device. It is read in your browser, and Download saves the result as a .txt file with “-deduped” added to the name.
Can I remove duplicate lines without sorting?
Yes, that is the default. Keep first leaves the first copy of every line where it was, and Sort the result stays on No (keep order) unless you change it.
How do I remove duplicate lines from CSV by one column?
Set Compare only column to the column number, counting from 1, and type the separator in split by, usually a comma. Only that field is compared and the first or last full row for each value is kept.
How do I remove duplicate lines case insensitive?
Tick Ignore upper / lower case. Lines that differ only in capital letters then count as one, and the kept copy keeps its original capitals.
Can I remove duplicate lines free of charge?
Yes. There is no sign-up, no usage limit and nothing added to your output. The work runs on your own device, so there is no per-job cost to pass on.
Can I remove duplicate words instead of lines?
Yes. Under Items are separated by, choose Spaces (words). Each word becomes an item, repeats are removed and the result is joined with single spaces. Tick Ignore punctuation if words have commas or full stops attached.
Can I delete duplicate lines online on my phone?
Yes. The page works in mobile browsers. Paste into Your text, then press Copy above the result. Open a file uses your phone's file picker.
How do I remove duplicates from list items separated by commas?
Choose Commas under Items are separated by. Each item between commas is compared, and the result is joined again with a comma and a space.
Which copy of a repeated line is kept?
With Keep first, the first copy stays and later ones are removed. With Keep last, the last copy stays in its place, which suits exports where later rows are newer.
How can I see only the lines that are duplicated?
Choose Only duplicates under Show. You get one copy of every line that appears more than once, with the most repeated lines first.
How do I count how many times each line appears?
Choose Every line with its count. Each line is shown after its count and a tab. Pick Most repeated first in Sort the result to rank them.
How do I find lines that are in only one of two lists?
Paste both lists one after the other and choose Lines that appear once. Lines found in both lists appear twice and are left out, so only the lines unique to one list remain.
Can I see which lines were removed?
Yes. The Removed lines list shows every dropped copy with its line number and the number of the line it matched. The most repeated lines are listed next to it with their counts.
What does Remove empty lines do?
It drops blank lines, including lines that contain only spaces, and the label shows how many there were. Untick it to keep blank lines; then one blank line stays and the others count as duplicates.
Is there a size limit?
There is no upload, so there is no upload limit. Up to about 3 million characters the result updates as you type. Above that, change the settings and press the Remove duplicates button.
Why do two lines that look the same both stay?
They differ in something hard to see, such as a capital letter, a double space or a punctuation mark. Try Ignore upper / lower case, Treat several spaces as one and Ignore punctuation.
What is the command-line way to do this?
sort -u removes repeats but sorts the lines. awk with seen[$0]++ keeps the first copy and the original order. In PowerShell, Get-Unique needs sorted input, while Select-Object -Unique keeps the order.
Does the tool change my lines?
No. Options such as ignoring case or punctuation only change how lines are compared. The kept lines appear exactly as they were written in your text.
Is my text uploaded or saved?
No. Everything runs in your browser and nothing is uploaded. Only your settings are remembered in this browser; the text and files are never stored.
Clean your list now
Keep first or last, ignore case or spaces, compare a column, see what was removed. Free, private and done on your device.
Back to the toolLast updated October 2026 · Written and maintained by the FlipMyFormat team