CSV column drag sort & filter editor | ZeroTools

Read a CSV file, sort columns using up and down arrows, change headings, exclude unnecessary columns from the output, and filter row data using conditional logic. You can check the preview and save all matching rows as a new CSV.

Loading tool interface...

When to use this tool

Back to the tool ↑

Load UTF-8 CSV files to reorder columns, toggle visibility, rename headers, filter rows with AND conditions, and export edited datasets locally.

Try it first

Load the demo CSV, filter by department equals Engineering, hide the age column, and review the resulting rows and columns in the table.

Before you start

Supports files up to 10MiB. Previews the first 50 rows while exporting all filtered rows. Warns about formula-like values without automatically sanitizing them.

Local Browser Processing and Network Communication Notice

This tool's processing operates locally within your browser. Standard site assets, analytics, and advertisements may communicate separately. There are no guarantees.

ZeroTools: Browser Processing & Privacy

ZeroTools focuses on tools that process input on your device. Check each tool’s scope and limitations before use.

Processing and privacy policy
Chapter 1

CSV Loading Method and Batch Processing Scope

This tool reads the selected CSV file all at once as a string using the browser's FileReader as UTF-8, parsing it directly in JavaScript memory.

Because it operates synchronously without Web Workers, stream processing, or chunked reading, the raw source string, the parsed matrix, filtered arrays, and the serialized string for export may reside simultaneously in browser memory.

To restrict processing scale within manageable bounds, conservative batch processing limits are enforced: input file size must not exceed 10 MiB, the raw text length must be within 10,485,760 JavaScript UTF-16 code units (measured by string length counters rather than Unicode codepoints), data rows are capped at 100,000 records (excluding the header), columns are limited to 200, the total cell count must not exceed 1,000,000 cells (including headers), and serialized output is limited to 20,971,520 UTF-16 code units.

These bounds are safeguards specific to this in-memory tool rather than general browser or CSV format limits. These thresholds restrict input dimensions but do not guarantee processing speed, tab responsiveness, or memory sufficiency under all device conditions.

Character encoding is strictly restricted to UTF-8. If the input file begins with a UTF-8 Byte Order Mark (BOM), the BOM is automatically detected and stripped prior to parsing.

The tool does not perform automatic encoding detection for legacy formats like Shift_JIS, EUC-JP, or UTF-16 based on file contents.

In addition, the delimiter in the column editor is strictly fixed to a standard comma; tab-delimited TSV files, semicolon-delimited files, or arbitrary custom delimiters cannot be parsed by this tool.

If characters appear garbled or delimiters fail to separate fields, inspect the original character encoding and delimiters, and use an external character encoding conversion tool to convert your dataset into standard comma-separated UTF-8 text before loading it into the browser.

Unlike lenient parsers that attempt silent error correction, this tool stops processing and raises an informative syntax error when encountering unclosed double quotes, double quotes located at invalid positions, stray characters following a closing quote prior to a delimiter or newline, or column count mismatches between data records and the header.

When column counts disagree, the specific record number is reported so that the source file can be corrected. The file input value is cleared immediately after selection, ensuring that selecting the same file again after editing works once reading finishes.

Furthermore, new file selection and sample data loading controls remain disabled while a read is actively in progress, so stale reads can only be discarded by clicking Clear or navigating away.

Users without a CSV on hand can explore column reordering and filtering using the built-in 6-column, 7-row demo data.

Chapter 2

Parsing Quoted Fields and Rules for Preserving Whitespace

The CSV text is scanned sequentially character by character from the beginning to construct a two-dimensional array while accurately managing commas, record delimiters, and quotation states.

Inside fields enclosed in double quotes, commas are treated as literal field contents rather than column delimiters, and line breaks—including CRLF, LF, and CR—are preserved as internal characters of the cell.

Doubled double quotes ("") appearing within a quoted field are restored to a single double quote character. Conversely, unquoted fields containing double quotes mid-value, or characters following a closing quote before a delimiter or newline, are treated as strict syntax errors and immediately halt execution rather than being silently repaired or guessed by the parser.

Under RFC 4180 specifications, whitespace characters are considered integral components of field data. This tool adheres strictly to that principle by not applying uniform trim operations to cell contents during parsing; for instance, leading and trailing spaces in fields like " A " are preserved without truncation.

Empty values and fields containing only whitespace characters are preserved as distinct values. Each record is verified against the column count established by the initial header record.

Missing columns are never silently filled with empty strings, and surplus columns are never silently discarded without notice. While LF and CR are accepted alongside CRLF as record separators, this flexibility does not constitute a claim of universal compatibility with every irregular CSV dialect.

When saving, the current output headings and target rows are serialized into CSV format using the uniform column count. Fields containing delimiters, line breaks, or double quotes are wrapped in double quotes, with internal double quotes properly duplicated.

Standalone empty fields are serialized as double quotes to preserve empty records, whereas multiple empty columns within a row are formatted with delimiters.

Trailing empty fields are preserved as columns, and internal whitespace is retained intact. CSV files containing only a header record (with zero data rows) or single empty headers are fully supported for editing and export.

No automatic data type inference is applied during parsing or serialization, meaning values resembling ages, dates, or postal codes remain intact as literal strings throughout the workflow.

Chapter 3

Drag-and-Drop and Arrow Reordering, Header Renaming, and Hiding Columns

Following parsing, the initial record is designated as the header, and an interactive card is generated for each column. You can reorder the output sequence by dragging and dropping column cards directly onto one another within the editor interface.

For keyboard navigation and environments where drag-and-drop interactions are unavailable or inconvenient, each card also provides dedicated up and down arrow buttons to move columns one step at a time.

The top-to-bottom card sequence established in this list directly determines the left-to-right column arrangement in both the table preview and the exported CSV file, giving users clear and predictable control over output structure.

The output heading name can be directly edited within each card's text input field. Leaving a heading blank or assigning duplicate names identical to another column is permitted, but the tool displays a visible warning counter reporting the exact count of blank and duplicate headers.

This alerts users to potential conflicts, as downstream database loaders or spreadsheet applications that rely on unique header keys may fail to distinguish columns with duplicate or empty names.

Clicking the eye icon toggles column visibility, excluding that column from both the screen preview and the saved CSV. Hiding a column removes it from the output target list without modifying or deleting data from the underlying matrix.

Every column configuration retains its original source column index established at load time. Neither dragging cards to rearrange display order nor renaming headings alters this underlying column reference.

Filter conditions likewise bind to the original column index using AND logic, ensuring that reordering columns never displaces active filter conditions to unintended fields.

In addition, columns hidden from output remain fully selectable as filter targets. This allows preprocessing workflows such as filtering rows where a department contains Sales while omitting that department column from the exported CSV, providing flexible data refinement without modifying source data.

Chapter 4

Five Filter Conditions, AND Evaluation, and Finite Number Matching

Row filtering provides five distinct conditions: "Partial match", "Exact match", "Greater than", "Less than", and "Empty value". Both partial match (contains) and exact match (equals) perform case-insensitive text comparisons.

Importantly, search values entered into text filters preserve surrounding whitespace rather than trimming it. Because cell whitespace in the CSV matrix is also preserved without trimming, an exact match search against a cell containing leading or trailing spaces requires matching whitespace in the query.

An empty search query in a partial match filter matches all rows because an empty string is contained within any string; to remove a condition, delete that specific filter card from the interface.

For magnitude comparisons (greater than and less than), leading and trailing whitespace is stripped from both the cell value and the search query solely during numeric evaluation, and values are converted using JavaScript's Number.

Rather than treating empty strings or whitespace-only cells as zero, comparison is strictly restricted to non-empty inputs that satisfy Number.isFinite.

Consequently, empty cells, whitespace-only cells, NaN, Infinity, and non-numeric strings will not match numeric magnitude conditions.

If the search query is left blank or cannot be parsed as a finite number, a warning notice is displayed on screen. The "Empty value" condition strictly targets strings with a length of 0, meaning cells with half-width or full-width spaces are not treated as empty.

Multiple active filter conditions are evaluated simultaneously under strict AND logic. For example, adding both "Department contains Development" and "Age is greater than 30" will retain only those records satisfying both criteria.

The tool does not support OR, NOT, regular expressions, date range comparisons, or compound single-input inequality ranges. Numeric evaluation is not a general data type conversion of the underlying dataset, but a temporary evaluation performed exclusively while evaluating that specific filter condition.

This ensures that non-matching records and other data types remain unaffected by numeric comparison rules.

Chapter 5

Difference Between Top 50-Row Preview and Full CSV Output

Filtered records are displayed in a standard HTML preview table, with screen rendering limited to the top 50 rows. This 50-row ceiling serves purely as a display safeguard to limit the number of rendered DOM elements, although it does not guarantee responsive browser performance across varying hardware.

When 51 or more records satisfy active filter criteria, all matching rows are included in the downloaded CSV file, subject to the overall output text limit.

If zero records match the criteria, the table renders headings only; if every column is toggled hidden, the download button is completely hidden rather than disabled.

Comparing the displayed total row count with the filtered count allows users to verify filter accuracy prior to export.

When downloading, only visible columns arranged in their current card order are extracted across all filtered rows. The generated CSV text is converted into a UTF-8 Blob and downloaded under the fixed filename edited_data.csv using a temporary Object URL.

Line breaks are standardized to LF without prepending a UTF-8 BOM. The temporary Object URL is promptly revoked after triggering the download to ensure memory is released cleanly by the browser.

There are no functions to alter output formatting based on operating system, toggle BOM inclusion, specify custom filenames, or export to XLSX or JSON formats.

This predictable export process ensures uniform CSV generation across all supported desktop platforms.

Applying standard CSV quotation rules does not control downstream spreadsheet software behavior regarding column type inference, automated date conversions, or preservation of leading zeros.

Even when character encoding and line breaks are parsed cleanly, identical visual rendering across every spreadsheet application cannot be guaranteed.

Spreadsheet applications often automatically format unquoted or quoted strings that look like dates, scientific notation, or numeric codes like postal numbers.

After saving your CSV, verify heading names, column counts, leading zeros, and date formatting within your destination application to ensure compatibility with your workflow.

Chapter 6

Memory Load, Formula Candidate Warnings, and Feature Boundaries

CSV loading, parsing, column configuration, row filtering, and serialization are executed entirely within browser memory as client-side JavaScript operations.

However, this does not represent an absolute guarantee of offline isolation when accounting for external page assets, analytics scripts, advertising tags, browser extensions, and managed device monitoring.

When working with confidential or sensitive personal data, consult your organization's data protection policies and verify your browser and network environment.

Furthermore, operating within batch processing limits does not guarantee zero CPU or memory pressure, and performance may vary depending on local hardware resources.

For output headings and cells, the tool inspects values beginning with potential formula-trigger characters—specifically =, +, -, @, horizontal tabs, CR, LF, or certain full-width symbols—and displays an informative candidate warning count.

This counter highlights cells that spreadsheet applications might interpret as executable formulas. To maintain data fidelity, original values are never modified, sanitized, or prefixed with apostrophes.

Because values are left untouched and formulas are not executed, this warning counter serves solely as an advisory check rather than comprehensive formula injection prevention.

Untrusted CSV files should be handled with caution when opened in spreadsheet software.

This tool is specifically designed for column reordering via dragging or arrow buttons, heading renaming, column visibility selection, basic row filtering, and CSV export.

It does not support row sorting, in-place cell editing, duplicate row removal, data aggregation, OR or NOT searches, regular expressions, date parsing, locale conversion, numeric rounding, formula evaluation, undo/redo history, persistent configuration storage, shared URLs, or multi-file merging.

Because the tool outputs a newly generated CSV without overwriting the original file, keeping your original source file intact is advised until export results are thoroughly verified.

Frequently Asked Questions (FAQ)

A.
This tool enforces conservative batch limits for in-memory processing: input files must be 10 MiB or smaller, with input text up to 10,485,760 JavaScript UTF-16 code units. The dataset can contain up to 100,000 data rows (excluding the header), up to 200 columns, and a total cell count up to 1,000,000 cells (including the header), with serialized output capped at 20,971,520 UTF-16 code units. Because processing runs synchronously in browser memory without Web Workers or stream chunking, memory consumption and speed depend on device resources. Testing with smaller datasets first and splitting very large files is recommended.
A.
The tool strictly supports UTF-8 encoded files. If a UTF-8 Byte Order Mark (BOM) is present at the beginning of the file, it is automatically stripped before parsing. However, automatic character encoding detection for Shift_JIS, UTF-16, or other legacy formats is not supported. In addition, the column editor strictly requires comma delimiters; it cannot parse tab-delimited TSV or semicolon-delimited files. If your data uses Shift_JIS, UTF-16, or tab delimiters, convert the file to a standard comma-separated UTF-8 CSV using an external conversion tool before loading it.
A.
Columns hidden using the eye icon are excluded from both the HTML table preview and the exported CSV file. However, hidden columns remain fully functional as filter criteria. Multiple filter conditions are evaluated simultaneously using strict AND logic, retaining only the rows that satisfy every configured condition. The table preview renders the top 50 filtered rows for visual inspection, but downloading the file exports all matching rows across the visible columns into edited_data.csv.
A.
No. The tool does not automatically sanitize, neutralize, or modify cell values by prepending apostrophes or removing characters. Instead, it inspects visible headings and data cells for candidate values starting with =, +, -, @, horizontal tabs, CR, LF, or certain full-width characters that spreadsheet software may interpret as formulas, and displays an informative warning count. Because original data values are preserved without alteration, this warning does not guarantee complete formula injection prevention. Untrusted CSV files should be verified according to your organization's security guidelines before opening them in spreadsheet applications.