Convert Seurat to AnnData

Convert your Seurat .rds objects to AnnData .h5ad format with full metadata preservation

Convert your .rds to .h5ad

Upload a Seurat .rds object and download a converted AnnData .h5ad file. Use it with Python-based tools like Scanpy, scvi-tools, Cell2Location, squidpy, and CellRank, or submit to repositories like CELLxGENE Discover. Spatial transcriptomics data (coordinates, tissue images, scale factors) is automatically preserved. No R or Python installation required.

Upload your Seurat object

Drag & drop your .rds file here

or click to browse

Max file size: 20 GB

What gets preserved

  • Expression matrices (raw counts and normalized data)
  • Cell metadata (@meta.data.obs)
  • Gene metadata (@meta.features.var)
  • Dimensional reductions (PCA, UMAP, tSNE → .obsm)
  • Nearest-neighbor graphs → .obsp
  • Default assay layers (counts, data, scale.data) → .layers
  • Unstructured metadata → .uns
  • Spatial coordinates (@images.obsm['spatial'])
  • Tissue images and scale factors → .uns['spatial']

Spatial transcriptomics support

Spatial Seurat objects (Visium, Visium HD, SlideSeq) are automatically detected. Spatial coordinates, tissue images, and scale factors are extracted and stored in the AnnData format that scanpy, squidpy, and Cell2Location expect — no manual workarounds needed. Works with both legacy VisiumV1 and newer FOV-based objects.

What doesn't get preserved

  • Non-default assays — only the default assay (typically RNA) is converted. Additional assays like ADT or ATAC are not included, as AnnData does not have a native multi-assay structure
  • Reductions from other assays — dimensional reductions associated with a non-default assay are skipped
  • Command log @commands (the history of Seurat functions run) is not transferred

Looking to convert in the other direction? Convert .h5ad to .rds