Unified Robot Description Format
URDF is how a robot describes itself
A URDF file is XML that lists a robot's rigid bodies, the joints connecting them, the mass and inertia of each part, and the meshes that give it shape. ROS, Gazebo, MuJoCo and Isaac all read it. Open one below and see what is inside.
What you can do with a robot description here
-
Viewer
Open URDF, MJCF, SDF or Xacro in the browser. Toggle collision geometry, joint axes, centre of mass and inertia. Drag any joint through its range.
-
Motion
Build a movement: pose the robot onto a timeline, or bake a gait from the structure of whatever model is open. Then check it against the file it came from — the torque each joint is asked for versus the effort declared for it, joints resting on their limits, feet sliding, and whether the robot is still upright at the end.
-
Physics lab
Run the robot instead of looking at it. Gravity, contact and motors in the browser, a controller you write yourself, and four tests that answer with a number: does it stand, what shove does it take, what slope, what load. It is MuJoCo, with nothing to install.
-
Converter
Move a model between URDF, MJCF, SDF, USD and Xacro. Every direction states what it could not carry across — on the page, and again inside the file you download.
-
ros2_control
The block, the controllers.yaml and the launch file, generated from your description rather than retyped from it — joints, interfaces and limits read out of the file you already have.
-
Robot models
A hundred robots in URDF and MJCF — quadrupeds, humanoids, arms, hands — opened in a tab instead of a clone. Download one as a folder that works: description, meshes, licence. Each keeps its own licence and links back to where it came from.
-
From CAD
Coming out of SolidWorks, Onshape or Fusion? The exporter is somebody else's; what is here is what those exports get wrong — the wrong unit, mesh paths that only work on one machine, inertia copied between links — and the check that says which of them happened to yours.
-
Validator
Every model opened in the viewer is checked as it loads: inertias that disagree with the geometry, impossible masses, links with no collision shape, meshes too dense to simulate.
What is inside a URDF file
Two elements carry the structure. A <link> is a rigid body: it holds mass,
an inertia tensor, visual geometry for display and collision geometry for physics.
A <joint> connects a parent link to a child link and states how they may
move relative to each other.
Joints come in six kinds. Revolute rotates within limits, continuous rotates without them, prismatic slides, fixed does not move at all, while floating and planar exist in the specification but appear rarely. Every movable joint has an axis, and usually a limit describing its range, maximum effort and maximum velocity.
Because links reference mesh files rather than embedding them, a URDF is rarely a single file. It is a description plus a folder of STL, DAE or glTF geometry, and a model that loads on one machine may fail on another simply because those paths resolve differently.
URDF, MJCF, SDF and USD
URDF is the oldest and most widely supported, and it is a tree: every link has exactly one parent, so closed kinematic chains cannot be expressed directly. MJCF is MuJoCo's format and covers what URDF cannot — loops, tendons, contact parameters — which is why reinforcement learning work tends to live there. SDF is Gazebo's, and describes whole worlds rather than one robot. USD comes from graphics and is what NVIDIA's Isaac stack builds on.
Conversion between them is rarely lossless. A capsule in MJCF has no URDF equivalent and becomes a cylinder; contact parameters have nowhere to go at all. Anything that claims a clean round trip is hiding something, so this converter lists every loss.
Common questions
What does URDF stand for?
Unified Robot Description Format. It came out of ROS and is now read far beyond it.
How do I open a URDF file?
Drop it into the viewer. If the model references meshes, add the whole folder or a ZIP archive so those paths resolve. Nothing is installed and the file is parsed for display, not published.
What is the difference between URDF and Xacro?
Xacro is URDF with macros, properties and simple arithmetic, so repeated structure — four identical legs, six similar joints — is written once. It expands into plain URDF before anything else reads it.
Can MuJoCo load a URDF directly?
It can, but it ignores everything URDF has no place for, and its defaults for contact and damping rarely match what you want. Converting to MJCF first makes those choices explicit instead of implicit.
How do I get a URDF into Isaac Sim?
Convert it to USD. Isaac opens a stage, not a description, and the conversion writes the physics schemas it looks for — rigid bodies, collision APIs, joints with limits — along with the full inertia tensor rather than just its diagonal.