---
title: Opening files
order: 4
---

The Rerun Viewer and SDK have built-in support for opening many kinds of files, and can be [extended](../../concepts/logging-and-ingestion/importers/overview.md) to support any other file type without needing to modify the Rerun codebase itself.

The Viewer can load files in 3 different ways:

-   via CLI arguments (e.g. `rerun myfile.jpeg`),
-   using drag-and-drop,
-   using the open dialog in the Rerun Viewer.

All these file loading methods support loading a single file, many files at once (e.g. `rerun myfiles/*`), or even folders.

> [!WARNING]
> Drag-and-drop of folders does [not yet work](https://github.com/rerun-io/rerun/issues/4528) on the web version of the Rerun Viewer.

The following data types have built-in support in the Rerun Viewer and SDK:

-   Native Rerun files: `rrd`
-   3D models: `gltf`, `glb`, `obj`, `stl`
-   Images: `avif`, `bmp`, `dds`, `exr`, `farbfeld`, `ff`, `gif`, `hdr`, `ico`, `jpeg`, `jpg`, `pam`, `pbm`, `pgm`, `png`, `ppm`, `tga`, `tif`, `tiff`, `webp`
-   Point clouds: `ply`
-   Text files: `md`, `txt`
-   [LeRobot](https://huggingface.co/docs/lerobot/index) datasets: `directory`

With the exception of `rrd` files that can be streamed from an HTTP URL (e.g. `rerun https://demo.rerun.io/version/latest/examples/dna/data.rrd`), we only support loading files from the local filesystem for now, with [plans to make this generic over any URI and protocol in the future](https://github.com/rerun-io/rerun/issues/4525).

## Logging file contents from the SDK

To log the contents of a file from the SDK you can use the `log_file_from_path` and `log_file_from_contents` methods ([C++](https://ref.rerun.io/docs/cpp/stable/classrerun_1_1RecordingStream.html#a8f253422a7adc2a19b89d1538c05bcac), [Python](https://ref.rerun.io/docs/python/stable/common/other_classes_and_functions/#rerun.log_file_from_path), [Rust](https://docs.rs/rerun/latest/rerun/struct.RecordingStream.html#method.log_file_from_path)) and the associated examples ([C++](https://github.com/rerun-io/rerun/blob/main/examples/cpp/log_file/main.cpp), [Python](https://github.com/rerun-io/rerun/blob/main/examples/python/log_file/log_file.py), [Rust](https://github.com/rerun-io/rerun/blob/main/examples/rust/log_file/src/main.rs)).

> [!NOTE]
> When calling these APIs from the SDK, the data will be loaded by the process running the SDK, not the Viewer!

snippet: tutorials/log-file
