How to edit a .riv file you only have the runtime for

You downloaded a .riv from a website, received it from a colleague, or pulled it out of a shipped app. It plays beautifully. You want to change the colour, retime the animation, or reuse the character in your own project — and Rive's editor will not let you, because the file is a runtime file, not a project.

This is a more common situation than it sounds. .riv is the format that ends up in production, so almost every animation you find on the internet is one. The editor cannot import a .riv as an editable project, on purpose: importing runtime data as *authored* data would silently produce a project with broken references and missing editing metadata.

There are three routes out of that situation.

Route 1 — rebuild it in the editor by hand

Open the .riv in Rive as a reference, then recreate the artwork as new objects. This is what Rive expects, and it gives you a perfectly authored project — but it is manual work proportional to the complexity of the file. A two-artboard character rig is hours; a 110k-object project is not realistic.

Use this route when the animation is small, or when you only need one specific piece of it.

Route 2 — convert the file

A converter reconstructs the editor project from the runtime object stream. The .riv object stream is actually complete: every object's type and every property's key and value is in there. What is missing is the *editor-only* fields, and most of those can be derived from structure — the parent/child tree, the sibling order, the timeline back-references.

When done properly, the output is a real .rev you can open and edit: layer tree, vector paths, fills and strokes, bones and skin weights, timelines with keyframes and easing, state machines with states and transitions, embedded fonts and images, constraints and data bindings.

There are two ways to run one:

npm install -g riv2rev
riv2rev animation.riv -o animation.rev
riv2rev animation.riv --json    # inventory as JSON, for scripting

The CLI is MIT licensed and open source: github.com/bobolinlinlin/riv2rev.

Route 3 — ask for the project

If the animation belongs to someone else, ask for the .rev or the source project. Every artist publishing to the Rive community keeps the editable project; the .riv is only the exported, runtime-ready artefact. Asking is often faster than either route above, and it avoids any question about who owns the artwork.

Before you rely on a converted file

A conversion is reconstruction, not resurrection. Three pieces of information simply are not in a runtime file and are rebuilt as defaults: layer lock state, state-machine node coordinates, and library relationships (which library a component was published to). What gets lost when converting covers each one in detail.

Everything else is reconstructed from the file itself, and the result is deterministic: the same .riv always converts to the same bytes.

A word on permissions

.riv files are frequently other people's work. If the file came from a published project, its artwork, fonts and embedded images may be licensed assets. Reverse-engineering a file for your own study is fine; shipping the recovered artwork in a commercial project is a different thing entirely. Check who owns it before you publish anything you recovered.

Turn a .riv into an editable .rev

The converter runs entirely in your browser — your file is never uploaded. Preview the animation first, then download the editable project.

Open the converter or use the CLI