Compatible with IntelliJ IDEA and other JetBrains IDEs based on IntelliJ Platform 2025.2 and newer.
This plugin adds support for CSV (Comma-Separated Values) and related file types to JetBrains IDEs. It provides a text editor and a table editor with syntax validation, highlighting, formatting, inspections, and other familiar IDE features.

(see full changelog)
Note
Release numbers follow VVV.X.x: the earliest supported IDE build branch, the plugin’s
major version, and its bugfix version. For example, 252.53.0 supports IDEs from 2025.2.
The minimum supported IDE follows the official IntelliJ release cycle with a one-year delay.
Previous versions, including their README files, can still be downloaded and installed manually (see Installation).
The plugin checks CSV files according to the standard defined in RFC 4180, but it tolerates whitespace around quoted values and accepts most literal text. This makes validation less restrictive and keeps the format flexible.
According to the strict standard, the following snippet is invalid because of the whitespace after each comma. The plugin accepts it:
"firstName", "lastName", "birthday"
Syntax errors are still detected and can be inspected. If a document contains syntax errors, features such as the table editor, code formatting, or structure view may be unavailable or may work with incomplete data until the errors are fixed.

CSV files are flexible and can be used for many kinds of data. This has led to several CSV variants, such as semicolon-separated and pipe-separated values, which use a different value separator while keeping the same general format.
The plugin supports file-specific separator settings. It provides predefined comma (,), semicolon (;), colon (:), tab, pipe (|), and record-separator (RS) values. You can also choose a custom separator.
A different separator can be chosen for each CSV file.
The file types TSV (Tab-Separated Values) and PSV (Pipe-Separated Values) are supported as CSV variants. TSV files use a tab as their separator, and PSV files use a pipe. They use the same formatter and code-style settings as CSV files, and support the same features, including the table editor, inspections, and intentions. The .tab extension is also recognized as TSV.
The plugin provides a table editor for CSV, TSV, and PSV files as an alternative to the text editor. It has its own features and settings, independent of JetBrains’ Edit as Table… and Data tab.
Switch views using the editor tabs or Show Text Editor / Show Table Editor buttons. The selected field is kept by default.
Note: Files with syntax errors are read-only in the table editor. Fix the errors in the text editor before editing them as a table.

Use the IDE’s Find and Replace shortcuts (Ctrl+F and Ctrl+R in the default Windows/Linux keymap) to search table cells, with case-sensitive, whole-word, and regular-expression options. Matches select and reveal the corresponding cell. Replace All is a single undoable edit. Press Escape to close the search bar.
The plugin adds a CSV Table view alongside the existing text views in the diff viewer for CSV, TSV, and PSV files. Select it when comparing Git revisions, viewing Local History changes, using Compare with Clipboard, or comparing two files with Compare Files.
Note: The table and text views may report difference counts that differ by one due to how they handle a newline at the end of a file.
Use the IDE’s usual Copy and Paste shortcuts for CSV or spreadsheet data. Paste starts at the focused cell and overwrites existing values rather than inserting or shifting cells. The table grows only if the pasted data extends beyond its edges.
While editing a cell, paste inserts text into that cell instead of filling multiple cells. A trailing line break in copied data does not create an extra row. You can undo the entire paste in one step.
Comment lines must be pasted into the first column and replace whole rows. Pasting multiple values into a comment row is not supported.
A right-click within the table or on its row numbers opens a context menu for adding or removing rows. Right-click the table header to add or remove columns.
The actions in these menus apply to the currently selected rows or columns, which may differ from the cell or header where the context menu appears. A right-click does not change the selection by default.
Drag column headers or the middle of row numbers to reorder columns or rows. Their context menus also offer Move Selected Rows Up/Down and Move Selected Columns Left/Right. Dragging a row number’s bottom edge resizes the row instead.
Use Ctrl/Cmd-click or Shift-click to select multiple headers, then drag any selected header to move the selection as one block. Non-adjacent selections keep their original order and become adjacent at the drop position. A click without dragging selects a single row or column.
Moves change the file, not just the display order, and support Undo/Redo. Read-only files and files with syntax errors cannot be reordered; the empty row for a final line break cannot be moved. Large moves show a progress dialog; cancelling during preparation leaves the file unchanged.
Drag the right edge of the blank header above the row numbers to resize the row-number column. Its width is saved for each file and does not change the data-column widths. Until you resize it, the row-number column automatically fits the visible row numbers.
Select a column header, then right-click the header and choose Freeze Columns Through Selection to keep that column and all columns to its left visible while scrolling horizontally. If multiple columns are selected, the rightmost selected column determines the frozen area. Choose Unfreeze Columns in the same menu to restore normal scrolling.
A distinct divider after the last frozen column marks the frozen area in both the header and table. Frozen columns remain editable and support the same selection, resizing, and Find/Replace controls as other columns. The frozen-column count is saved for each file.
Configure table commands in Settings/Preferences > Keymap > CSV Table Editor (or search for the action name). You can add, remove, or reassign shortcuts using the IDE’s standard keymap controls, including two-stroke shortcuts. Changes take effect in already-open table editors. The context menus show the current shortcuts, not fixed default labels.
The following are the default shortcuts. Ordinary arrow-key and Enter-based cell navigation remain table controls rather than configurable CSV actions:
CTRL+SHIFT+ENTER stop editing and move to next row
CTRL+SHIFT+DELETE/BACKSPACE deletes the current selected column(s)
CTRL+DELETE/BACKSPACE deletes the current selected row(s)
The unmodified Delete/Backspace shortcuts edit text normally while a cell’s text editor is open; they clear selected cells only outside cell-editing mode. Other table commands, such as moving rows/columns, freezing columns, and resetting column widths, can also be assigned shortcuts in Keymap.
Hold CTRL while using the mouse wheel to change the table text size. Hold SHIFT while using the mouse wheel to scroll horizontally.
The plugin provides a customizable text editor and table editor. Their settings can be adjusted in the CSV/TSV editor settings page.
Changes to Text Editor and Table Editor settings do not update already-open editors. Close and reopen the affected files for changes to take effect.

You can choose Text Editor first, Table Editor first, or Text Editor only. This controls the order of the editor tabs and whether the table editor is shown. A Table Editor only option is not available because the table editor cannot edit files with syntax errors.
Some plugins, such as Big Data Tools, provide their own editors for CSV and TSV files and hide all other editors, including the CSV text and table editors. Enable this option to keep the CSV text and table editors available: they are shown first, ordered according to Editor Usage, followed by editors of other plugins that hide all other editors as well. Editors of other plugins that do not hide other editors are not shown. This option is disabled by default to keep the editors of other plugins as they are. Close and reopen files that are already open for the change to take effect.
When switching between the text editor and the table editor, the newly shown editor selects the field that was selected in the other one (see Table Editor). This option is enabled by default. Disable it to keep independent positions in both editors, e.g. to preserve a multi-cell table selection or multiple text carets while checking something in the other editor. Changes apply to already-open editors.
| The predefined separators are , (comma), ; (semicolon), : (colon), ** | ** (pipe), tab, and the record separator. A custom separator can also be entered; it must contain at least one character and no spaces. |
Default Value Separator defines the separator used for newly created or opened CSV files. You can change the separator for an individual file from the editor’s context menu.
The separator of a newly opened CSV file can be detected automatically by comparing the occurrences of predefined separators.
If Auto Detect is enabled (the default), Default Value Separator is used for newly created files and for existing files where no separator can be detected. Otherwise, existing files use the separator detected in their content.
Note: This option has no effect on TSV/PSV files, the separator is pre-defined by their file- and language-type.
The following escape characters are supported: “ (double quote) and \ (backslash).
Within a quoted value, the escape character marks a double quote as part of the value instead of the closing quote.
Default Escape Character defines the escape character used for newly opened CSV, TSV, and PSV files. You can change it for an individual file from the editor’s context menu.
Define the character or characters used to mark a line as a comment in a CSV document. The default indicator is #.
Enable zero-based column numbering. This affects the information tooltip in the text editor and the column numbering in the table editor.
Choose the coloring method of values. Possible options are:
All colors can be adjusted via CSV Color Scheme settings.
The current caret row can be highlighted in CSV, TSV, and PSV files. Disable this option if it interferes with custom background colors.
Enable or disable highlighting of tab characters when they are used as the value separator in TSV files, and choose the highlight color. Tabs inside a value are not highlighted. This option is independent of Show info balloon.
Highlight active column under Settings/Preferences > Editor > General > CSV/TSV/PSV > Text Editor > Highlighting highlights fields in the selected column. This option is enabled by default. Column highlights use the color scheme’s write-access-under-caret style, distinct from normal selected-text occurrences, and are cleared while Find or Replace is open. The IDE’s selected-text occurrence highlighting remains controlled by its own settings.
Set Maximum rows beside the checkbox to -1 (the default) for no limit, 0 for no highlighted rows, or a positive integer to limit highlighting to nearby CSV rows, including the selected row. Other negative values are not allowed. Multiline values count as one CSV row. Highlighting more rows can reduce editor responsiveness. Close and reopen the editor after changing its settings.
Enable or disable the field information in the text editor. It shows the current value, its header, and its column number when hovering over a value (if the IDE’s Show quick documentation on hover option is enabled) or via Quick Documentation (Ctrl+Q / F1). The information is computed only for the requested value, so it remains cheap for large files.
Choose whether soft wrapping is enabled for CSV, TSV, and PSV files. You can still change this for an individual file by right-clicking the editor’s left margin.
If enabled, trailing whitespace is always preserved when editing CSV, TSV, and PSV files, regardless of the general editor setting.
Note: This setting has no effect on the table editor. Unquoted values are trimmed when the table editor opens them. When a value is edited in the table editor, leading or trailing whitespace causes the value to be quoted.
The table editor uses Swing components with padded cells, a flat header, and rounded scrollbars. It follows the IDE’s light or dark appearance without changing the IDE theme.
The default and initial height of each table row in pixels.
The default and initial width of a table column in pixels.
The maximum width of a table column in pixels when column widths are adjusted automatically. Set it to 0 to remove the limit. This setting has no effect when you resize columns manually.
If the file ends with a completely empty line (without spaces or tabs), the table editor ignores that line instead of displaying it as empty values. When the file is saved, the existing empty line is retained at the end.
When a value is created or edited in the table editor, always quote it, even when quoting is not required.
Without this setting, editing or replacing a value in the table editor keeps its quotes if it was quoted before, while other values are quoted only when required.
CSV elements such as separators (for example commas, pipes, and semicolons), quote characters, escaped text, comments, and values are colored according to the CSV color scheme settings:
The preset colors follow JetBrains IDE defaults and support different UI themes.

In addition to colors and font styles for the different CSV elements, you can define 10 column colors for rainbow coloring. These colors are used when Rainbow is selected as the Value Coloring option in the Editor Settings.

Formatting CSV requires care because whitespace can be part of a value. The formatter can add spaces around separators, align values as a table, or trim whitespace according to your settings. Formatting can be disabled by clearing all formatting options.
Apply formatting to CSV documents as you would to code:
The following examples use this CSV snippet as input:
"name", "city", "position"
Annasusanna,Amsterdam,1
Ben , Berlin , 2
Adjust spacing around the separator.
Space before separator
"name" , "city" , "position"
Annasusanna ,Amsterdam ,1
Ben , Berlin , 2
Space after separator
"name", "city", "position"
Annasusanna, Amsterdam, 1
Ben , Berlin , 2
Separator settings can be used together with Format as table. Trimming options do not apply when Format as table is enabled.
Format as table
Adds or removes leading and trailing whitespace to format the text as a readable table.
Note: Formatting a CSV file changes its values and can conflict with the visual table editor.
"name ","city ","position"
Annasusanna,Amsterdam,1
Ben ,Berlin ,2
Keep quoted value as is
Note: With this option, quoted values are kept intact. Enabling Enforce value quoting for the table editor can make it easier to edit and format a CSV file in either editor.
"name" ,"city" ,"position"
Annasusanna,Amsterdam,1
Ben ,Berlin ,2
Align right
" name"," city","position"
Annasusanna,Amsterdam, 1
Ben, Berlin, 2
Enhanced width calculation
Calculates text width based on the width of its characters and takes wide characters into account. This can noticeably affect performance on large files.
"name ","city ","position"
Annasusanna,Amsterdam,1
汉字宋 ,Berlin ,2
Trimming can be combined with Space before separator and Space after separator.
Trim leading whitespaces
"name","city","position"
Annasusanna,Amsterdam,1
Ben ,Berlin ,2
Trim trailing whitespaces
"name", "city", "position"
Annasusanna,Amsterdam,1
Ben, Berlin, 2

The editor’s context menu lets you change the value separator or escape character used to interpret a specific file. A custom value separator can also be entered.
Note: This changes how the plugin interprets, validates, and highlights the file; it does not change the file’s content. Existing separators and escaped values are not replaced or rewritten.
Calculates and sets a width for each table column based on its content. The maximum column width can be changed in the Editor Settings.
Sets all table columns back to their default width. The default column width can be changed in the Editor Settings.
Inspections help you fix syntax errors. Press Alt+Enter when the cursor is at an error. The plugin provides three types of inspections:
Intentions provide quick ways to adjust the document. Press Alt+Enter to see the intentions available at the current cursor position. The plugin provides six types of intentions:
Install the plugin from the JetBrains Marketplace in your IDE (recommended):
You can also download the plugin package from the JetBrains Marketplace or from GitHub Releases and install it manually:
Make sure the file is assigned to the plugin’s file type in Settings/Preferences > Editor > File Types. The plugin recognizes .csv, .tsv, .tab, and .psv files.
If another CSV plugin, such as Rainbow CSV, is enabled, the IDE may assign the file to that plugin instead. Check the file type mapping in Settings/Preferences > Editor > File Types and disable the competing plugin for the affected file type if necessary.
Some plugins, such as Big Data Tools, hide all other editors for CSV/TSV files. If the CSV text and table editors are missing, enable Hide editors of other plugins under Settings/Preferences > Editor > General > CSV/TSV Editor > General. This setting is disabled by default; enabling it keeps the CSV text and table editors available and places them first according to Editor Usage. Close and reopen the affected files for the change to take effect (#937).
If the Table Editor tab or the Show Table Editor button is missing, check the table editor settings and make sure Text Editor only is not selected. The table editor is also unavailable for files the IDE cannot load because they exceed the configured file-size limits.
The current plugin release requires IntelliJ Platform 2025.2 or newer. If your IDE is older, disable the plugin and install a plugin release compatible with your IDE from GitHub Releases.
The IntelliJ Platform disables code insight for files larger than its configured limit. To change this limit, open Help > Edit Custom Properties and add or update the following property, using a value in bytes:
idea.max.intellisense.filesize=<maximum-file-size-in-bytes>
Restart the IDE after changing the property.
Contributions are welcome. Please check CONTRIBUTING.md for more information.
Besides source code contributions, feel free to open bug reports or just suggest new features here.