Choose the export route for your volume, preserve observations and their relationships, and validate the archive before transforming any data for a new platform.
Teams archiving Langfuse history or preparing a move
One filtered sample
Start with a UI export in CSV or JSON and record the table filters used.
Recurring or large exports
Review the documented blob-storage or programmatic routes and their availability for your deployment.
Migration success
Measure complete, correctly related records—not merely the existence of a downloaded file.
At a glance
| Export concern | Validation |
|---|---|
| Filters | Source and export use the same interval and environment |
| Columns | Inspect the file; UI column visibility does not redact it |
| Relationships | Observation and parent identifiers remain usable |
| Scores | Each score stays attached to its intended object |
| Destination | Input, observed output, and expected behavior are mapped deliberately |
1. Inventory what you need to preserve
List traces or observations, scores, prompts, and datasets as separate objects. The names and schema can depend on the Langfuse version and export route, so capture the actual output schema rather than relying on an old mapping script. Define a fixed time window and include the environment and any tags used to select the archive. Decide whether you need the full nested history or a smaller set of task-level examples.
2. Export a sample from the UI
Open the relevant observability table and apply the filters for your sample. Use its export action and choose CSV or JSON. Langfuse documents that table filters affect the export, while custom visible-column settings do not limit the exported columns. Inspect the downloaded file before sharing or uploading it elsewhere: hiding a column in the UI is not a data-redaction step.
- Save the exact filters and timezone with the export.
- Confirm which object type the table exports.
- Inspect payload fields and associated scores in the file itself.
3. Choose a repeatable route for larger archives
For automated extraction, Langfuse documents exports to blob storage and programmatic access. Review the supported object types and destination configuration for your deployed version. Start with a small completed export before scheduling a large backfill. Use fixed intervals and a stable record identifier when merging batches; retries or overlapping windows must not duplicate your downstream dataset.
4. Keep a manifest alongside the files
A manifest records what an archive claims to contain. Fill in the actual counts after reconciliation; leave unknown values null until measured. Preserve checksums separately after the files stop changing. The example below describes the audit structure rather than an executable Langfuse export configuration.
{
"source": "langfuse",
"project": "your-project",
"startInclusive": "2026-09-01T00:00:00Z",
"endExclusive": "2026-09-02T00:00:00Z",
"filters": { "environment": "production" },
"exportRoute": "ui-json",
"exportedObjectType": "record-the-actual-type",
"sourceCount": null,
"uniqueExportedCount": null,
"missingRelationships": null,
"verifiedAt": null
}5. Reconcile relationships and scores
Compare unique IDs with the same source filter, then inspect a nested failure and a successful request. Check that scores refer to the intended observation or trace and that timestamps preserve their timezone. A missing parent may sit outside the export interval; record the reason instead of flattening the relationship. Spot-check long or structured inputs so serialization changes do not silently damage useful examples.
6. Prepare a separate working dataset
Keep the raw export unchanged and transform only a copy. Select the application input, observed output, and reviewer-approved expected behavior explicitly. Lunary documents a CSV/JSONL dataset import API, but it does not make every Langfuse export a ready-to-import dataset or recreate the source trace history. Keep a row-to-source-ID map, compare inserted counts after import, and validate new application instrumentation before completing the cutover.
Common questions
Does hiding a Langfuse table column exclude it from export?
No. The official UI export documentation says custom column configuration does not change which columns are exported.
Can I import the file directly as Lunary trace history?
This guide does not claim that capability. Keep an archive, map selected examples for a dataset, and instrument new traffic as separate work.
Should I delete the source data immediately?
Keep it according to your retention policy until reconciliation and the planned migration acceptance checks are complete.
Sources & methodology
Lunary publishes this guide. We compare documented workflows and explain where each approach fits; this is not an independent benchmark or a hands-on product rating. Features, limits, and commercial terms can change. Check the linked vendor documentation before deciding.