Plugin Documentation

CsvKit
CSV parsing for Blueprints

Parse CSV-formatted text at runtime and look values up by column name, row key or index — no Data Table assets needed.

v1.0
UE 4.27 & 5.8
Win64 (verified) · Mac · Linux
Category Programming
Alpha XP

Overview

CsvKit turns a CSV-formatted string — loaded from a file, downloaded over HTTP or typed into a variable — into a queryable object. You choose the delimiter, the quote character, an optional header row and an optional key column, then read whole columns, whole rows or single cells by name, key or index. It is meant for runtime data such as mod files, settings exported from spreadsheets, localisation tables or server responses.

  • One node to parse: Parse CSV Rows.
  • Configurable delimiter and quote character (quoting can be disabled).
  • Optional header row for column names, or your own column names.
  • Optional key column that identifies each row (for example an ID column).
  • Lookups by column name, column index, row key, row index, and single cells by name/key or indices.
  • Row and column counts, column names and row keys exposed as read-only properties.

Requirements

RequirementDetails
Unreal Engine4.27 and 5.8 (verified clean on both)
ModulesCsvKit (Runtime)
DependenciesNone. No other plugins are required.
LanguageBlueprints (the classes are not exported for use from other C++ modules)
PlatformsWin64, Mac and Linux are enabled by the plugin. Win64 is built and verified by Alpha XP; Mac and Linux are supported by the code, not verified by Alpha XP.

Installation

  1. Close the editor. Copy the CsvKit folder into your project's Plugins folder (create it if needed), or install the plugin to the engine from the launcher.
  2. Open the project. For C++ projects, rebuild when the editor asks you to compile the plugin.
  3. Open Edit > Plugins, find CsvKit in the Programming category, enable it and restart the editor.
Verifying the installRight-click in a Blueprint graph and type Parse CSV Rows. If the node appears under the CsvKit category, the plugin is loaded.

Quick start

Blueprint

Example data (for instance loaded from a file into a string variable):

id,name,score
p1,Alice,10
p2,Bob,7
  1. Add Parse CSV Rows and connect the text to CSV String.
  2. Set Header Row to 0 (the first line holds the column names) and Keys Column to 0 (the id column identifies each row). Keep the default delimiter (comma) and quote character (double quote).
  3. Promote the returned Csv Kit Object to a variable.
  4. Call Get Cell by Name and Key with column score and key p2: it returns 7. Get Column by Name with name returns Alice, Bob.
C++CsvKit is a Blueprint plugin: its classes are not exported (CSVKIT_API is not applied to them), so call the nodes from Blueprint. The module itself can be listed as a dependency for its log category LogCsvKit.

Parsing

Category CsvKit. Static function of UCsvKitBlueprintLibrary.

NodeTypeDescription
Parse CSV RowsCallableParses CSV String and returns a Csv Kit Object. Inputs: Column Names (optional names to use instead of a header row), Delimiter Character (first character is used, default comma), Quote Character (default double quote; empty disables quoting; a leading backslash escapes the character), Header Row (index of the header line, -1 = no header), Keys Column (column whose values become row keys, -1 = none).

Csv Kit Object

Class UCsvKitObject (shown as Csv Kit Object), returned by Parse CSV Rows. All functions are pure and return empty values when a name, key or index is not found.

NodeTypeDescription
Csv Kit ObjectClassParsed CSV data. Keep a reference (variable) as long as you query it.
Get Column by NamePureAll values of a column, by header name (needs a Header Row).
Get Column by IndexPureAll values of a column by index.
Get Row by KeyPureAll cells of the row whose key-column value matches (needs a Keys Column).
Get Row by IndexPureAll cells of a data row by index.
Get Cell by Name and KeyPureOne cell, by column name and row key.
Get Cell by IndicesPureOne cell, by column index and row index.
Get Column Index for NamePureIndex of a header name, -1 if not found.
Get Row Index for KeyPureIndex of a row key, -1 if not found.

Read-only properties

PropertyTypeDescription
Column CountIntegerNumber of cells in the longest data row.
Row CountIntegerNumber of data rows (the header row is not counted).
Column NamesString arrayColumn names from the header row (filled when Header Row is 0 or greater).
Row KeysString arrayValues of the Keys Column, one per data row (filled when Keys Column is 0 or greater).
Row lengthWhen a Header Row is used, data rows whose number of cells differs from the header are skipped. Without a header row all rows are kept, and Column Count is the length of the longest row. Parser messages are written to the LogCsvKit category of the Output Log.

Troubleshooting

SymptomCause and fix
Get Column by Name or Get Column Index for Name finds nothing.Column names are read from the header row: set Header Row to the index of the header line (usually 0). With Header Row -1 the Column Names property stays empty.
Get Row by Key / Get Cell by Name and Key returns empty values.Set Keys Column to the index of the column that identifies rows; row keys are matched exactly (case-sensitive).
Values are split in the wrong places.Check Delimiter Character (for example ; for semicolon-separated files) and Quote Character. Only the first character of each is used.
Accented or non-Latin characters are wrong.The text is converted to the ANSI code page before parsing, so characters outside it are not preserved. Use ASCII data or transliterate before parsing.
Some rows are missing from the result.With a Header Row, rows that have a different number of cells than the header are skipped. Make every row have as many cells as the header, or parse without a header row (Header Row -1) and use the index-based nodes.
The result is lost after some time.The returned Csv Kit Object is a normal object: store it in a variable, otherwise it can be garbage collected.

Credits

© 2026 Alpha XP — alphaxp.net · Support: support@alphaxp.net. Built and verified for Unreal Engine 4.27 and 5.8.