Convert RDS to CSV
How to convert R data files (.rds and .RData) to CSV — free methods, in the browser or on your desktop
We don't have an in-browser converter for this format yet — the guide below covers every free route instead. For formats we convert instantly, browse all of our CSV converters.
An .rds file is a serialized R object, saved with R’s saveRDS(). Here’s the catch competitors skip: that object might be a data frame (which converts cleanly to CSV) or a model, list, or other structure that isn’t a table at all — in which case no converter can give you a meaningful CSV without you picking the tabular part out first. There’s no in-browser converter for this format here yet, so this guide covers the free routes. Fastest with no software: Posit Cloud or Google Colab below. If you already have R installed, jump to the R section.
No installation: two browser options
Option 1: Posit Cloud (RStudio in your browser)
Posit Cloud’s free tier gives you real RStudio in a browser tab — the cleanest path if you don’t have R anywhere.
- Sign up — Go to posit.cloud, create a free account, and click New Project.
- Upload your file — In the Files pane (bottom right), click Upload and select your
.rdsfile. - Run the code — Paste this into the Console and press Enter:
df <- readRDS("yourfile.rds") # replace with your uploaded filename
write.csv(df, "output.csv", row.names = FALSE)
- Download the result — In the Files pane, tick
output.csv, then More (gear icon) → Export.
Option 2: Google Colab with pyreadr
No R at all — Python’s pyreadr package reads .rds files that contain data frames.
- Open Colab — Go to colab.research.google.com, sign in with any Google account, and click New Notebook.
- Upload your file — Click the folder icon in the left sidebar, then the upload button, and select your
.rdsfile. - Run the code — Paste the snippet below into the cell and press the run button.
- Download the result — Refresh the file sidebar, right-click
output.csv, and choose Download.
!pip install pyreadr
import pyreadr
result = pyreadr.read_r("yourfile.rds") # replace with your uploaded filename
df = result[None] # .rds files store a single unnamed object
df.to_csv("output.csv", index=False)
Know the limitation: pyreadr reads data frames, vectors, and matrices — not arbitrary R objects like lists, models, or S4 objects. If it errors, your file isn’t tabular; use the Posit Cloud path and inspect the object there. With either option, your uploaded file lives in a temporary private session — but it is on Google’s or Posit’s servers, so for confidential data use the desktop option below.
Free desktop option: R itself
No GUI stats app opens .rds, so the desktop answer is R — and that’s less scary than it sounds: R is a free download from cran.r-project.org, and the entire conversion is the same two pasted lines as above. You never need to learn R to run them.
Python
The same pyreadr route works locally:
# pip install pyreadr
import pyreadr
result = pyreadr.read_r("data.rds")
df = result[None]
df.to_csv("output.csv", index=False)
The same limitation applies: data frames yes, arbitrary R objects no.
R
df <- readRDS("data.rds")
write.csv(df, "output.csv", row.names = FALSE)
If df turns out not to be a data frame, run str(df) to see what you actually have, and extract the tabular piece before writing.
What about .RData files?
An .RData file differs from .rds: load("data.RData") restores one or more objects directly into your environment under their original names, instead of returning a single object. Run ls() after loading to see what arrived. Then write.csv(whatever_it_was, "output.csv", row.names = FALSE) exactly as above.
Which method should I use?
| Your situation | Best method |
|---|---|
| No software installed, one file, data not confidential | Posit Cloud or Google Colab |
| Confidential data that can’t leave your computer | R on your desktop |
| Many files, or a task you’ll repeat | Python or R script |