Skip to main content
Speckle currently supports Revit versions: 2023, 2024, 2025, 2026, & 2027. The Revit connector works on Windows only.
2022 support has ended. If you use Revit 2022, use connector version 3.21.0 or upgrade Revit to a supported version. For more context, see this forum post.
The 2026.9 upgrade window is open until 1 November 2026. Update the Revit connector before then. To move existing models and scripts onto model placement, see Upgrade to 2026.9.

Setup

1

Install the connector

Install your Revit connector
2

Open the Revit connector

  1. In Revit, select the Speckle tab in the ribbon.
Revit toolbar
  1. Select Speckle to open the Revit connector.
  1. Select Sign in if you haven’t linked your Speckle account.
    Login
  1. Make sure your version of Revit is one of the supported versions.
  2. Uninstall and reinstall your connector.
Don’t select Run as administrator when installing: that installs the connector for the administrator account, not yours. Double-click the .exe, or right-click it and select Open.
Installation issues can also be caused by conflicting plugins.If you’re still experiencing problems, report it in our Community Forum and include:
  • Your application version
  • Your Speckle connector version
If your connector window is floating, try docking it to your application to fix blank UI issues. For major issues, you can sometimes find a log file in your directory at AppData\Roaming\Speckle\Logs. Report your problem in our Community Forum and include your application version, your Speckle connector version, and a copy of the log.
Signing in opens a browser page for your Speckle server. If it doesn’t open, or it never returns you to the connector, check that you can reach your server in your browser, update the connector to the latest version, and try again.
Older connector versions sign in through Speckle Desktop Services, which is deprecated. Update the connector to the latest version. If you must stay on the older version, search for Speckle Desktop Services in Windows search and run it before signing in.
All Speckle connectors are installed like any other program. You can uninstall them directly from your system’s Applications. For a full uninstall, also remove Speckle Desktop Services if it is installed.
You can always download the latest version of the connector in the web app. If a new version of the connector is available, you will also see a notification in your connector UI.

Publishing a Model

1

Select Publish

Publish
2

Choose a project

  • Select an existing project - or select New Project to create one
Publish
3

Choose a model

  • Select an existing model - or select New Model to create one
Publish
4

Select objects to publish

  1. In your application viewport, select the elements you want to publish.
  2. Select Publish.
Publish
Publish
  1. Your model is now published to Speckle and is available to the rest of your team.
To keep models aligned, choose a Reference Point when you publish. The connector stores it as the model placement, and collaborators can load the model into Revit at any reference point. See Model placement.
All visible elements in the Model category (such as walls, floors, beams, and columns) can be published. In the Annotation category, only visible gridlines can be published. Each element contains the following information:
  • category, family, and type
  • level
  • location curve (if any)
  • Mesh (solid elements), Curve (model curves), or Pointcloud geometry
  • custom properties
  • render material
  1. Click the blue filter field at the top of Select objects dialog while publishing a new version.
Revit filters
  1. Select Views, and then select the view you would like to publish from.
  1. Click the blue filter field at the top of Select objects dialog while publishing a new version.
Revit filters
  1. Select Categories, and then click on any number of categories you would like to add to the filter.
Linked models are supported by default when publishing. If they are not included in your published version:
  1. Expand the Settings field at the bottom of the Select objects dialog while publishing a new version.
Revit settings
  1. Check that the Include linked models toggle is turned on.
Choose the datum consumers should use with the Reference Point setting when you publish. Geometry stays in Revit’s internal coordinates, and Speckle stores your choice as the model placement. Collaborators still need matching shared coordinates for models to overlay. See Model placement.
Both are based on Revit’s survey point, but differ in rotation:
  • Survey positions the model at the survey point with no rotation.
  • SharedCoordinates positions the model at the survey point and applies the True North rotation.
In short: SharedCoordinates = Survey + True North rotation.
All custom properties can be found under the properties field when you select and view a Revit object in your browser. Custom properties vary depending on the type of Revit element, and can include:
  • element id, built-in category, and workset properties
  • material quantities
  • parameters
  • structural material properties (such as density and compressive strength)
  1. Expand the Settings field at the bottom of the Select objects dialog while publishing a new version.
Revit settings
  1. Toggle the Send Rebars As Volumetric setting to true. Caution: publishing all rebars as their volumetric representations can significantly slow down publishing speed.
Yes. When you publish a model, all your 3D perspective views are automatically included, no extra steps needed.Note: Only 3D perspective views are published. Plan/section/elevation views and orthographic 3D views are not included.
The 3D viewer does not draw some colors and materials yet, so affected objects show as flat grey. Your published data keeps the colors. If the model was published before your project moved to the 2026.9 data format, publish it again to restore them. For the known cases, see 3D viewer. If a color is still missing, let us know in our Community Forum.
Image texture files are not supported. Speckle does not transfer bitmaps or other image maps (such as JPG or PNG files) embedded in materials from the source application.Speckle does carry PBR-style material data in general—where a connector maps to it, materials can include properties such as base colour, opacity, metalness, roughness, and emissive colour. That is not the same as shipping texture images: you get numeric material parameters, not image assets used for wood grain, brick patterns, and similar in the authoring tool.Different materials can still appear separately in the destination with distinct colours and PBR fields. What you see may look closer to a consistent shaded or PBR preview than to the full render-appearance with image maps in tools such as Revit or SketchUp. To use image textures in your target application, apply or remap them locally after you publish or load.
After you publish a Speckle model, click on the Report button to see any errors that may have occurred. Click on any item in the report to highlight that item in your application. Some objects may not be supported for publishing.

Loading a Model

1

Select Load

Load
2

Choose a project

Load
3

Choose a model

Load
4

Choose a version to load

  • Latest version is always first.
  • To load a specific version, select it from the UI.
Load
Load
Your selected model is now loaded in Revit.
All objects in Speckle models are loaded as Direct Shapes (generic models) with a default category in Revit. Each object will be loaded with:
  • render material (if any)
  • Mesh, Curve, or Solid (only from Rhino and Grasshopper) geometry.
If your model contains block instances, each instance is loaded as its own generic model by default. You can instead load them as Revit families by enabling the Receive Blocks as Families setting. See Blocks as Families for details.
Every loaded element carries a Speckle Application Id instance parameter holding the source object’s applicationId, so a script or schedule can find the Speckle object behind a Revit element. It is written on every load, including when you load a newer version of the same model. This needs a model published with a 2026.9 or later connector; older versions load without it.To load the rest of an object’s properties (Rhino user text and user dictionaries, Grasshopper attributes, parameters published from another Revit model), expand the Settings field at the bottom of the dialog and turn on Receive Properties as Parameters. Each property becomes an instance parameter on the created element:
  • A parameter the element already has with the same name (a built-in such as Mark or Comments, a project parameter, or a shared parameter you created) receives the value as it is. The value is converted to that parameter’s type, so a Number parameter gets a number and a Yes/No parameter gets a yes or no. A measurable parameter such as a length reads the value in the project’s display units for that quantity. If your parameter is bound to other categories than the loaded elements use, its binding is extended to those categories.
  • A name the element does not have yet is created as a shared parameter in the Speckle group of the Speckle shared parameter file (%APPDATA%\Speckle\SpeckleSharedParameters.txt), bound to the element’s category under Data, and typed from the loaded values: text, number, or yes/no. A name already in that file keeps the type it was first created with.
  • Parameters published from another Revit model keep their bare name (Mark, not Parameters.Instance Parameters.Identity Data.Mark); when an instance and a type parameter share a name, the instance value wins. Nested properties keep their dotted path, so a Rhino user dictionary entry phase in User Dictionary becomes User Dictionary.phase, and a record with a value field collapses to its parent (area.value becomes area). Characters Revit does not allow in a parameter name are replaced with _.
The setting is off by default because it adds shared parameters to the project. The parameters and their bindings stay in the project after the elements are deleted or the model is loaded again; remove them from Manage → Project Parameters if you no longer want them. Values that could not be written (text into a number parameter, a name that exists as a type parameter, a category that does not accept parameters, two properties that map to the same name) are listed as warnings in the load report, and the geometry is still loaded.Properties on nested blocks inside a family are not written.
If you are using reference points to coordinate your project, you can load your Revit model according to a specific reference point:
  1. Expand the Settings field at the bottom of the dialog while loading a model.
Revit settings
  1. Set Reference Point to Source (the default) to load the model according to the incoming model’s placement.
  2. Set it to InternalOrigin, ProjectBase, Survey, or SharedCoordinates to load the model according to that datum in your current document.
Models published from a 2026.9 connector land in the right place whatever the sender’s Apply Transform choice. See Model placement.
It depends on how the model was loaded:
  • Loaded as direct shapes from Rhino or Grasshopper: the object contains solid geometry, so you can edit the material directly on the direct shape.
  • Loaded as families using Receive Blocks as Families: a material type parameter is created on each family, so you can change the material from the project without editing the family definition.
  • All other cases: changing the applied material is not currently supported.
Existing material will be used instead of creating a new one.
Currently, you can not change the category of a loaded object.
Yes. When you load a model that contains views, they are automatically created as 3D views in Revit — no extra steps needed.Notes:
  • If a 3D view with the same name already exists in Revit, it will be skipped and not overwritten.
  • Views published from other connectors (e.g., Rhino named views) are also received as 3D views in Revit.
After you load a Speckle model, click on the Report button to see any errors that may have occurred. Click on any item in the report to highlight that item in your application. Some objects may not be supported for loading in Revit.
Image texture files are not supported. Speckle does not transfer bitmaps or other image maps (such as JPG or PNG files) embedded in materials from the source application.Speckle does carry PBR-style material data in general—where a connector maps to it, materials can include properties such as base colour, opacity, metalness, roughness, and emissive colour. That is not the same as shipping texture images: you get numeric material parameters, not image assets used for wood grain, brick patterns, and similar in the authoring tool.Different materials can still appear separately in the destination with distinct colours and PBR fields. What you see may look closer to a consistent shaded or PBR preview than to the full render-appearance with image maps in tools such as Revit or SketchUp. To use image textures in your target application, apply or remap them locally after you publish or load.
This happens when you don’t have permissions to load a project. Contact the project owner to change your role.
Yes. Next to the search box in the project selection dialog, there’s an Add model by URL option. Paste the model URL there.

Model placement

Published geometry stays in Revit’s internal coordinates. The Reference Point setting selects the datum you want consumers to use, and Speckle stores that choice next to the model as a model placement. The viewer and the Revit connector apply it when they load. One publish serves every datum: collaborators choose their placement on their side instead of asking you to republish. A linked model’s placement in the host document is never written as the model’s reference point.

Publish with a reference point

1

Open publish settings

Expand Settings at the bottom of the Select objects dialog while publishing a new version. You should see Reference Point and an Apply Transform toggle.
2

Choose a reference point

Set Reference Point to InternalOrigin (default), ProjectBase, Survey, or SharedCoordinates. Use SharedCoordinates to match a survey or civil model’s orientation, not just its origin.
3

Leave Apply Transform off

Keep Apply Transform off, the default. Geometry stays in internal coordinates and the placement is stored separately. You should see the toggle remain off when you publish.
Survey uses the survey point origin only, with no rotation. SharedCoordinates adds the True North rotation.
Turn Apply Transform on only if a downstream tool that does not understand model placements needs the geometry pre-positioned. Once it is on, one publish cannot serve every datum for that model.
If the selected base point cannot be found in the document, the connector falls back to the internal origin. The viewer then shows Internal Origin (fallback).

View the placement in the web app

The web viewer lands the model using its model placement. A placement picker lets you inspect the same model from any other datum without republishing. The datum you published with is marked (published).

Load with a reference point

The Reference Point load setting offers Source (default), InternalOrigin, ProjectBase, Survey, and SharedCoordinates. Models published from a 2026.9 connector land in the right place whatever the sender’s Apply Transform choice. If the sender applied the transform to the geometry, Revit inverts it automatically. With Source:
  • 2026.9 publish, Apply Transform off: nothing is applied. Geometry is already in internal coordinates.
  • 2026.9 publish, Apply Transform on: the sender’s transform is inverted automatically.
  • Publish from before 2026.9: the sender’s transform is inverted, as before.
With a named datum, Revit first removes any transform the sender applied, then applies your chosen datum.

Read the placement in a script

Scripts and SDK consumers read modelPlacement.* from eav.model. Apply the placement yourself unless the sender turned Apply Transform on.
  • modelPlacement.transform: internal origin to the datum selected on publish. The value is 16 row-major doubles. Translation is in modelPlacement.units.
  • modelPlacement.default: which datum that is (internalOrigin, projectBasePoint, surveyPoint, sharedCoordinates).
  • modelPlacement.source: the same datum, or internalOriginFallback when the selected base point could not be found in the document.
  • modelPlacement.options.<datum>.transform: the transform for every available datum, so a consumer can switch.
  • modelPlacement.appliedToGeometry: false by default, true only if the sender turned Apply Transform on. If it is true, invert the transform before you place the model.
  • referencePoints.* and projectLocation.trueNorthAngle: raw base-point positions, True North, and site location.

Upgrade to 2026.9

Models you already published stay readable, and the 2026.9 connector loads them. Re-publish once from a 2026.9 connector if you need the viewer placement picker and named datums for an existing model. Scripts and SDK consumers that read referencePointTransform on the root object must move to modelPlacement.*. A connector from 2026.8 or earlier cannot load a version published by a 2026.9 connector. When a 2026.9 consumer reads a model published before 2026.9, the old root transform is migrated into a placement record, but the datum kind cannot be recovered.

Re-publish an existing model

1

Update the Revit connector

Install a 2026.9 Revit connector. You should see Apply Transform next to Reference Point in publish settings.
2

Publish a new version

Leave Apply Transform off, then publish as usual. You should see a new version on the model, with the placement picker available in the viewer.

Update scripts and SDK consumers

The model is already in scope.
  1. Read modelPlacement.* from eav.model.
  2. Apply modelPlacement.transform. The value is 16 row-major doubles. Translation is expressed in modelPlacement.units.
  3. If modelPlacement.appliedToGeometry is true, invert that transform before you place the model. Do this regardless of the receive datum.
  4. Then apply the receive datum you want, if it is not Source.
AutoCAD and Civil 3D follow the same contract.
Check the placement picker. The published datum is marked (published). If it shows Internal Origin (fallback), the survey point could not be resolved in your document.
Versions published from 2026.9 replace it with a placement record. Read modelPlacement.* from eav.model. See Read the placement in a script.
Report it with the model URL and the publish and receive settings on both sides. The viewer’s placement overlay shows world origin, model origin, and each reference point.
Last modified on November 4, 2026