Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

CSV / Excel to Parquet Converter

Parquet files from spreadsheets and JSON, with the types you choose.

Free preview, no sign-upIncluded in your pass Premium tool Premium pass: ₹799 / $19.99 for 30 days On this device: nothing is sent
+3 +1 more details No uploadWorks offline once opened Data

Free preview: the size and the read-back check of the Parquet file, with the first rows of its schema and statistics (up to 10). Locked until you unlock it: download and copy.

Premium pass ₹799 for 30 days or ₹249 for 1 week, one‑time. Premium pass $19.99 for 30 days or $7.99 for 1 week, one‑time. How to unlock

Try before you buy.

  • Free preview: the size and the read-back check of the Parquet file, with the first rows of its schema and statistics (up to 10).
  • Locked until you unlock it: download and copy.
  • Unlock: Premium pass, ₹799 for 30 days or ₹249 for 1 week, a one-time payment that never renews. Unlock: Premium pass, $19.99 for 30 days or $7.99 for 1 week, a one-time payment that never renews.

Ways to unlock shows how to get the full result.

See passes (opens in a new tab)

Printing this result is locked in the free preview.

Data from

1. Data

Open a CSV, TSV or Excel file, or paste rows copied from a spreadsheet.

Or paste the table (from Excel, Google Sheets or a CSV)

Next steps Done. What next?

Start over

A Premium pass unlocks the full result. See passes

All data & spreadsheet tools

About the CSV / Excel to Parquet Converter

Turn a CSV, TSV, Excel or JSON file into Apache Parquet — the columnar format that DuckDB, Spark, pandas, Polars, BigQuery, Snowflake and data lakes read fastest — without installing Python or uploading the data. Each column gets the type that keeps its values exactly: whole numbers as INT32 or INT64 (IDs of up to 19 digits stay exact), decimals as DOUBLE, true/false as BOOLEAN, ISO dates as DATE, date-times as TIMESTAMP, objects and arrays as JSON, and the rest as STRING; codes with leading zeros such as 007 stay text. Change any type, name or column before writing.

Choose Snappy or Gzip compression (or none) and the row-group size. When the file is written it is read straight back and every value is compared with what was meant to be written, so you know the file is good before you download it. The page also shows the schema, the sizes and each column’s minimum and maximum from the file’s own statistics.

Without a pass, the free preview shows the size of the file and the read-back check, with the first rows of its schema and statistics; the .parquet file and the copies unlock with a Premium pass.

How to use it

  1. Open a CSV, TSV or Excel file (or paste rows from a spreadsheet), or switch to JSON or JSON Lines for an array of objects or one object per line. Try an example loads a small order list.
  2. Check the columns: the type worked out for each one, a few example values, and the Parquet name. Change a type where you know better — for example a numeric code to STRING, or a column of 0 and 1 to BOOLEAN — and untick columns you do not need.
  3. Choose the compression, the rows per row group, what counts as missing (empty cells, NULL, N/A …) and what to do with values that do not fit their type.
  4. Press Convert to Parquet. Check the summary and the read-back result, then, with a pass or after unlocking this result, download the .parquet file. With a pass, Copy column list gives the names with Spark SQL types for a CREATE TABLE statement.

Examples

An order export
Input
order_id,customer,order_date,shipped_at,amount,paid
100045001,Asha Rao,2026-01-04,2026-01-05T09:30:00Z,120.50,true
Result
order_id INT32 · customer STRING · order_date DATE · shipped_at TIMESTAMP(MICROS, UTC) · amount DOUBLE · paid BOOLEAN
JSON Lines with nested fields
Input
{"id": 1, "user": {"name": "Asha"}, "tags": ["a", "b"]}
{"id": 2, "user": {"name": "Ravi"}, "tags": []}
Result
id INT32 · user JSON · tags JSON

Nested objects and arrays are kept as JSON values (the JSON logical type), which DuckDB and Spark can query with their JSON functions.

Common uses

  • Getting spreadsheet exports into a data lake, a warehouse or DuckDB in a compact, typed format.
  • Making Parquet test files with exact types for a pipeline, without writing a script.
  • Shrinking a large CSV for sharing: Parquet files are usually much smaller and keep the column types.
  • Converting API output (JSON or JSON Lines) to Parquet for analysis.

How the types are chosen

A type is chosen only when every value in the column fits it, in this order: BOOLEAN (true / false), INT32 (whole numbers from −2,147,483,648 to 2,147,483,647), INT64 (larger whole numbers, exact up to 19 digits), DOUBLE (other numbers), DATE (YYYY-MM-DD), TIMESTAMP (YYYY-MM-DD hh:mm[:ss[.ffffff]], with or without a zone), JSON (objects and arrays), else STRING. Whole numbers with a leading zero (007, 0042) stay STRING so no digit is lost. Numbers written with a decimal comma (12,5 or 1.234,50, as in many European files) count as numbers when the file uses them: the separator is worked out from the values and shown under Numbers written as text use, where you can change it. Missing values do not count: every column is OPTIONAL, so they are written as nulls. Overriding a type also reads looser text: 1,234.50, $12, 12.5 %, a decimal comma, yes/no for BOOLEAN, or dates such as 15/03/2026 for DATE (day or month first, as you choose; it starts as your country writes dates). Whole numbers beyond INT64 (above 9,223,372,036,854,775,807) stay STRING, as a DOUBLE would lose their last digits.

Dates and timestamps

DATE columns hold days since 1970-01-01. TIMESTAMP columns hold microseconds since 1970-01-01, as the Parquet specification defines: when the values name their zone (Z, +05:30) they are converted to UTC and marked as instants (isAdjustedToUTC = true); when they do not, they are written as local times (isAdjustedToUTC = false, read the same everywhere — Spark calls this TIMESTAMP_NTZ). You can switch a column between the two; local times turned into instants are taken as UTC. Excel dates and times are read from the workbook’s own values, not from how they are displayed.

Compression and row groups

Snappy is fast to write and read and the most common choice; Gzip (the GZIP codec of the Parquet specification, RFC 1952) usually gives smaller files; None writes the pages as they are. Rows are stored in row groups — 100,000 rows each by default; smaller groups let readers skip more data with the min/max statistics, larger ones compress better. Columns with many repeated values are dictionary-encoded automatically.

The read-back check

After writing, the file is opened again with a Parquet reading library and every value of every column is compared with what was meant to be written — integers exactly, dates as days, timestamps to the microsecond, JSON as text. The result is shown above the schema; a file that did not pass would say which values differ.

Limitations

  • Tables that open in the page: CSV and TSV files up to 100 MB, workbooks up to 50 MB, JSON up to 100 MB (up to 2,000,000 records). Everything is held in memory while the file is written.
  • Flat columns only: nested JSON is written as JSON text values, not as Parquet structs, lists or maps. There is no DECIMAL type: use DOUBLE, or STRING to keep the digits exactly as written.
  • Zstandard, LZ4 and Brotli compression are not offered.

Privacy

On this device: nothing is sent

Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.

Frequently asked questions

What do I get without a pass?

Without a pass, CSV / Excel to Parquet Converter shows the size and the read-back check of the Parquet file, with the first rows of its schema and statistics (up to 10). Until you unlock it, the result can’t be downloaded or copied. A Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.

How do I convert a CSV file to Parquet without Python?

Open the CSV here, check the column types, press Convert to Parquet and, with a pass, download the file. It is written in your browser by an open-source Parquet writer, so nothing needs installing and the data is not uploaded.

Which programs can read the file?

Any program that reads Apache Parquet: DuckDB (SELECT * FROM 'file.parquet'), pandas (pd.read_parquet), Polars, Apache Spark, Apache Arrow, BigQuery, Snowflake, Athena and others. The Parquet Viewer opens it in the browser.

Why is my ID column STRING and not a number?

Because at least one value has a leading zero (like 00123) or is not a whole number, and a number type would change it. If the zeros do not matter, choose INT64 for the column.

Are big numbers kept exactly?

Whole numbers are: INT64 holds every whole number up to 9,223,372,036,854,775,807, and the read-back check compares them exactly. Decimal numbers are written as DOUBLE, which keeps about 15 to 17 significant digits; keep a column as STRING if you need more.

Is my data uploaded?

No. The file is read, converted, written and checked by this page in your browser.

Learn more

Lessons on MySmartCoPilot Learn that use this tool:

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.