Text Cleaner
Remove duplicate lines, empty lines and extra spaces
Clean up text: remove duplicate or empty lines, trim and collapse whitespace, sort, reverse and number lines.
- Lines
- Duplicates
- Whitespace
- Sort
How to use Text Cleaner
- Paste text into Input text, drop a text file onto it, or use Open file. Try an example loads a messy sample.
- Tick the cleaning steps you want. Trim lines, Remove empty lines and Remove duplicate lines are on to start with.
- Adjust a step’s options next to it, such as Keep first or Keep last for duplicates, or the Order for Sort lines, and use the arrows to change the order steps run in.
- Check Lines before, Lines after and Characters below the result, then copy or download the Cleaned text, or open it in another tool with Send to….
How it works
The text is split into lines at LF, CRLF or a lone CR, and each ticked step runs on the lines in the order shown, top to bottom. Trim lines removes whitespace from either or both ends, including non-breaking spaces. Collapse inner whitespace turns runs of two or more spaces, tabs or non-breaking spaces into one space but keeps leading indentation. Remove empty lines also removes lines that contain only whitespace. Remove duplicate lines compares whole lines, optionally ignoring case, and keeps the first or last copy in its place.
Sort lines sorts A → Z or Z → A with the browser’s English collation, which can ignore case; Natural (numbers by value) puts item2 before item10; By length counts characters; and Random shuffles with a seeded generator so the order stays put while you edit, until you click Shuffle again. Convert tabs ↔ spaces expands tabs to the next tab stop, or turns leading spaces into tabs. Strip non-printable and zero-width characters removes control characters (keeping tabs and line breaks), soft hyphens, zero-width spaces and joiners, direction marks and bidi controls, and byte order marks.
The original line endings and any final newline are kept, unless Normalise line endings converts them to LF or CRLF. Everything runs in your browser as you type.
Limits
- Strip non-printable and zero-width characters also removes the zero-width joiner, which breaks joined emoji such as family or profession emoji into separate pictures.
- Leading spaces → tabs converts only indentation at the start of a line, not spaces inside it.
- Sorting uses English collation rules, so other languages may not sort in their own alphabetical order.
- Filtering is a plain substring match; regular expressions aren’t supported.
- The Characters count is in UTF-16 code units, so an emoji can count as two.
- Dropped or opened files are limited to 10 MB and must be text.
Privacy
Cleaning happens entirely in your browser; your text is never uploaded or stored. The Share button copies a link with your text and steps in its # fragment, which browsers don’t send to servers, but anyone you give the link to can read it. Send to… passes text between tools through this tab’s session storage, and it is removed as soon as the receiving tool reads it.
Frequently asked questions
Does the order of the steps matter?
Yes. Steps run top to bottom, each on the result of the ones above. For example, trimming before removing duplicates makes apple and apple count as the same line. Use the arrows to reorder steps, or Reset steps to go back to the default order.
How do I remove duplicates but keep the original order?
Turn on Remove duplicate lines and leave Sort lines off. The first copy of each line stays where it was, or the last copy with Keep last.
Can I find invisible characters in pasted text?
Turn on Strip non-printable and zero-width characters and watch the Characters count: if it drops, the text contained hidden characters such as zero-width spaces or byte order marks. Use Unicode Inspector to see exactly which ones.
Is the random shuffle repeatable?
Yes. The shuffle is seeded, so it stays the same while you edit, and a share link includes the seed. Shuffle again picks the next seed for a new order.
More tools
- Clean Image: Inspect and remove hidden image metadata
- JWT Decoder: Decode and verify JSON Web Tokens
- Diff Checker: Compare two texts line by line
- JS Runner: Run JavaScript and TypeScript in your browser
- JSON Formatter: Format, validate and minify JSON
- Encode / Decode: Base64, URL, HTML entity and hex
- Hash Generator: MD5, SHA and HMAC of any text
- UUID Generator: Generate UUID v4 and v7 in bulk
- Timestamp Converter: Unix time ↔ human dates
- Regex Tester: Test regular expressions live
- URL Parser: Break a URL into its parts
- HTTP Status Codes: Look up any HTTP status code
- MIME Type Lookup: File extension ↔ MIME type
- Password Generator: Strong random passwords and passphrases
- Random String Generator: Random tokens, IDs and keys
- Slug Generator: Turn titles into URL slugs
- Case Converter: camelCase, snake_case, Title Case and more
- Word Counter: Count words, characters and reading time
- JSON to TypeScript: Generate TypeScript types from JSON
- JSON Diff: Compare two JSON documents structurally
- JSON to SQL: Turn JSON arrays into SQL inserts
- YAML ↔ JSON: Convert between YAML and JSON
- XML ↔ JSON: Convert between XML and JSON
- CSV ↔ JSON: Convert between CSV and JSON
- CSV Viewer: View, sort and filter CSV files
- SQL Formatter: Format and beautify SQL queries
- cURL ↔ Fetch: Convert cURL commands to fetch and back
- Markdown Editor: Write Markdown with a live preview
- Find & Replace: Find and replace in any text
- Cron Expression Builder: Build and explain cron schedules
- User-Agent Parser: Identify browser, OS and device from a user agent
- HTTP Headers Inspector: Paste response headers and get them explained
- JWT Generator: Create and sign test JSON Web Tokens
- Certificate Inspector: Decode PEM certificates and keys
- Meta Tag Inspector: Check a page's SEO and social tags
- UTM Builder: Build campaign URLs with UTM parameters
- URL Cleaner: Strip tracking parameters from links
- Robots.txt Generator: Create and test a robots.txt file
- Sitemap Generator: Create an XML sitemap from a list of URLs
- Image Compressor: Shrink JPEG, WebP and AVIF images in your browser
- Image Resizer: Resize images by pixels, percentage or to fit a box
- Image Converter: Convert between PNG, JPEG, WebP and AVIF
- Image to Base64: Encode images as Base64 data URIs and decode them back
- SVG Optimizer: Minify and sanitize SVG files
- Favicon Generator: Make favicon.ico, Apple and Android icons from an image or emoji
- Color Converter: HEX, RGB, HSL, OKLCH and contrast checks
- Number Base Converter: Binary, octal, decimal, hex and float bits
- IP / CIDR Calculator: Subnets, masks and IP ranges for IPv4 and IPv6
- JSONPath Query: Query JSON with JSONPath expressions
- JSON Schema Validator: Validate JSON against a schema, or generate one
- Semver Checker: Check versions against semver ranges
- chmod Calculator: Unix permissions: rwx ↔ octal
- .env Diff: Compare and validate .env files
- TOTP Generator: Generate and verify 2FA codes
- String Escaper: Escape and unescape strings for any language
- Unicode Inspector: See every character, code point and hidden symbol
- Mock Data Generator: Generate realistic fake data
- QR Code Generator: Create QR codes for links, Wi-Fi and contacts
- Lorem Ipsum Generator: Placeholder text in paragraphs, sentences or words
- Date Calculator: Date differences, business days and durations
- Unit Converter: Convert bytes, lengths, weights, temperatures and more
- Query CSV with SQL: Run SQL queries on CSV files
- PDF Merge & Split: Merge, split, reorder and rotate PDFs
- PDF Metadata Cleaner: See and remove hidden PDF metadata
- Office Metadata Cleaner: Remove author and revision data from Word, Excel and PowerPoint
- Images to PDF: Combine images into one PDF
- Image Editor: Crop, rotate, resize and adjust images
- Encrypt / Decrypt Text: Encrypt text with a passphrase (AES-GCM)
- SSH Key Generator: Generate Ed25519 and RSA SSH keys locally
- Email Header Analyzer: Trace an email's path and check SPF, DKIM and DMARC
- JSON to Code: Generate Go, Python, Rust, Java, C# and Kotlin models from JSON
- docker run ↔ Compose: Convert docker run commands to docker-compose and back
- Color Palette Extractor: Pull the dominant colours out of any image
- Password Strength Checker: How long would your password take to crack?
- SPF / DKIM / DMARC Checker: Validate and explain email DNS records
- Kubernetes YAML Checker: Validate and explain Kubernetes manifests
- .gitignore Generator: Build a .gitignore from presets
- CSP Builder: Build and check a Content-Security-Policy
- JSON-LD Generator: Create schema.org structured data
- Open Graph Image Generator: Make 1200×630 social preview images
- CSS Generator: Gradients, shadows, clamp() and more
- Time Zone Meeting Planner: Find meeting times across time zones