<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kosuda / Filewisp</title>
    <description>The latest articles on DEV Community by Kosuda / Filewisp (@kosuda).</description>
    <link>https://dev.to/kosuda</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4031506%2Fa7ba2c84-b728-4cd2-82a7-c6945d76b21b.png</url>
      <title>DEV Community: Kosuda / Filewisp</title>
      <link>https://dev.to/kosuda</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kosuda"/>
    <language>en</language>
    <item>
      <title>I wanted to peek at AWS Parquet files as CSV in the browser, so I built a tool</title>
      <dc:creator>Kosuda / Filewisp</dc:creator>
      <pubDate>Thu, 16 Jul 2026 06:45:46 +0000</pubDate>
      <link>https://dev.to/kosuda/i-wanted-to-peek-at-aws-parquet-files-as-csv-in-the-browser-so-i-built-a-tool-21p6</link>
      <guid>https://dev.to/kosuda/i-wanted-to-peek-at-aws-parquet-files-as-csv-in-the-browser-so-i-built-a-tool-21p6</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Working in AWS S3 / Athena, I constantly wanted to &lt;strong&gt;quickly inspect a Parquet file as CSV&lt;/strong&gt; — and couldn't find a frictionless tool.&lt;/li&gt;
&lt;li&gt;Installing a local toolchain or spinning up a query engine just to &lt;em&gt;look&lt;/em&gt; at a file felt heavy.&lt;/li&gt;
&lt;li&gt;So I built a &lt;strong&gt;browser-only Parquet ⇄ CSV converter&lt;/strong&gt; and put it out for free (no upload, processed in the browser):

&lt;ul&gt;
&lt;li&gt;Parquet Viewer: &lt;a href="https://ai-image-tools.com/en/tools/parquet-viewer" rel="noopener noreferrer"&gt;https://ai-image-tools.com/en/tools/parquet-viewer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Parquet → CSV: &lt;a href="https://ai-image-tools.com/en/tools/parquet-to-csv" rel="noopener noreferrer"&gt;https://ai-image-tools.com/en/tools/parquet-to-csv&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CSV → Parquet: &lt;a href="https://ai-image-tools.com/en/tools/csv-to-parquet" rel="noopener noreferrer"&gt;https://ai-image-tools.com/en/tools/csv-to-parquet&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sharing in case you hit the same wall.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;When you work with data on AWS, you keep running into moments where you just want to &lt;strong&gt;see what's inside&lt;/strong&gt; a &lt;code&gt;s3://.../part-0000.parquet&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check the column names and a few rows before writing an Athena query&lt;/li&gt;
&lt;li&gt;Debug a pipeline and confirm the emitted Parquet looks right&lt;/li&gt;
&lt;li&gt;A non-engineer asks for it "in something I can open in Excel"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But Parquet is a &lt;strong&gt;binary, columnar format&lt;/strong&gt; — you can't open it in a text editor or a normal spreadsheet. To peek inside, the options were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pip install pandas pyarrow&lt;/code&gt; and write a script&lt;/li&gt;
&lt;li&gt;Stand up Athena / Glue and run a query (and watch the scan cost)&lt;/li&gt;
&lt;li&gt;Install a desktop app&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…all heavy for "I just want a look." I wanted something closer to &lt;strong&gt;drop it in the browser and see a table&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why go back and forth between Parquet and CSV
&lt;/h2&gt;

&lt;p&gt;They play different roles:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Parquet&lt;/th&gt;
&lt;th&gt;CSV&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Layout&lt;/td&gt;
&lt;td&gt;Columnar&lt;/td&gt;
&lt;td&gt;Row-based (text)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Size&lt;/td&gt;
&lt;td&gt;Small (compresses well)&lt;/td&gt;
&lt;td&gt;Large&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Types&lt;/td&gt;
&lt;td&gt;Typed per column&lt;/td&gt;
&lt;td&gt;All text (guessed)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human-readable&lt;/td&gt;
&lt;td&gt;Hard to open&lt;/td&gt;
&lt;td&gt;Opens in Excel etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Good for&lt;/td&gt;
&lt;td&gt;Analytics &amp;amp; storage&lt;/td&gt;
&lt;td&gt;Inspecting, sharing, handoff&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Parquet wins for analytics and storage
&lt;/h3&gt;

&lt;p&gt;In environments billed by &lt;strong&gt;data scanned&lt;/strong&gt; — S3 + Athena, BigQuery — leaving data as CSV means scanning more. With Parquet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Columns can be skipped → less scanned → &lt;strong&gt;lower query cost&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Compression and column-oriented encoding → often materially smaller than CSV, depending on the dataset&lt;/li&gt;
&lt;li&gt;Typed columns → fewer type-coercion and encoding headaches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data that lives in a platform long-term is best stored as Parquet from the start.&lt;/p&gt;

&lt;h3&gt;
  
  
  CSV wins for a quick look
&lt;/h3&gt;

&lt;p&gt;But when you "just want to see it once," want Excel, or need to hand it to a non-engineer, &lt;strong&gt;converting to CSV and opening locally is far faster&lt;/strong&gt; than standing up a query engine.&lt;/p&gt;

&lt;p&gt;So the rule of thumb becomes: &lt;strong&gt;Parquet for what the platform runs, CSV for checking and sharing&lt;/strong&gt; — and you need a converter at that boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;To make "just let me see it" as short as possible, the converter runs &lt;strong&gt;entirely in the browser&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I published it as part of &lt;a href="https://ai-image-tools.com/" rel="noopener noreferrer"&gt;Filewisp&lt;/a&gt;, a collection of free browser-based tools for image, PDF, and data conversion.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Parquet → CSV&lt;/strong&gt;: &lt;a href="https://ai-image-tools.com/en/tools/parquet-to-csv" rel="noopener noreferrer"&gt;https://ai-image-tools.com/en/tools/parquet-to-csv&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSV → Parquet&lt;/strong&gt;: &lt;a href="https://ai-image-tools.com/en/tools/csv-to-parquet" rel="noopener noreferrer"&gt;https://ai-image-tools.com/en/tools/csv-to-parquet&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parquet Viewer&lt;/strong&gt;: &lt;a href="https://ai-image-tools.com/en/tools/parquet-viewer" rel="noopener noreferrer"&gt;https://ai-image-tools.com/en/tools/parquet-viewer&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No upload, in-browser processing&lt;/strong&gt; — file contents stay in the browser instead of being sent to a conversion server.&lt;/li&gt;
&lt;li&gt;Handles common codecs (&lt;strong&gt;Snappy / Gzip / Zstd&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Drop a file → see &lt;strong&gt;row/column counts and a preview&lt;/strong&gt; → convert and download.&lt;/li&gt;
&lt;li&gt;No install, free, works on mobile browsers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The flow
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Drop the &lt;code&gt;.parquet&lt;/code&gt; you pulled from S3&lt;/li&gt;
&lt;li&gt;Check the column and data preview&lt;/li&gt;
&lt;li&gt;"Convert to CSV" → download&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Going the other way, use &lt;strong&gt;CSV → Parquet&lt;/strong&gt; to tidy a locally built CSV before loading it into a platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  Honest caveats
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Nested columns and Map types don't always flatten cleanly into CSV&lt;/li&gt;
&lt;li&gt;NULLs become empty fields; dates/timestamps become strings&lt;/li&gt;
&lt;li&gt;Size limit depends on browser memory and schema complexity. Split large files or use Athena/Spark for heavy workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's built for &lt;strong&gt;inspecting and small-to-medium conversions&lt;/strong&gt;, not heavy ETL.&lt;/p&gt;

&lt;h2&gt;
  
  
  A bit more depth
&lt;/h2&gt;

&lt;p&gt;I wrote up the parts that didn't fit here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is Parquet? How it differs from CSV: &lt;a href="https://ai-image-tools.com/en/guides/what-is-parquet" rel="noopener noreferrer"&gt;https://ai-image-tools.com/en/guides/what-is-parquet&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Parquet vs CSV workflows (AWS / BigQuery): &lt;a href="https://ai-image-tools.com/en/guides/parquet-csv-workflows" rel="noopener noreferrer"&gt;https://ai-image-tools.com/en/guides/parquet-csv-workflows&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Apache Parquet documentation: &lt;a href="https://parquet.apache.org/docs/" rel="noopener noreferrer"&gt;https://parquet.apache.org/docs/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Wrap-up
&lt;/h2&gt;

&lt;p&gt;If "I want to turn an AWS Parquet into CSV right in the browser" has ever stopped you for a minute, I hope this helps. Feedback and bug reports welcome — I'll keep improving it.&lt;/p&gt;

</description>
      <category>csv</category>
      <category>aws</category>
      <category>parquet</category>
      <category>dataengineering</category>
    </item>
  </channel>
</rss>
