Cover image for IFC.js
Antonio González Viegas
Antonio González Viegas

Posted on • Updated on


Hello everyone!
I have started developing an open source IFC web viewer. It is fully built on JavaScript and Three.js, and everything is done client- side (without depending on a backend service). The idea is that anyone with a browser will be able to navigate IFC files (geometry and information) without depending on native applications. In case you are interested, you can find the project here:

You can try it in your browser with this example:

The main advantages of bringing everything to the client are:

  • The scalability of the solution. The non-dependence of connection with a remote service to process an IFC means that there could be thousands of users visualizing IFCs simultaneously with no processing cost, since each user would be the one putting the computational power to visualize his model.

  • The flexibility / ease of use of the library: allows developers who want to use this library to operate without having to mount an API with HTTP calls. A clear example of this flexibility is having been able to deploy the entire application on github pages, creating a basic IFC viewer compatible with any modern device.

  • No internet connection necessary. As it is purely Javascript code, it would be possible to create desktop or mobile apps with React Native or Electron that would allow the viewing of IFC files offline.

There are also disadvantages to this architecture: smartphones have less power than computers or tablets and need more time to parse the IFC; however, in later versions it will be possible to save the processed scene, so that an IFC can be processed with any modern device and viewed with any other, drastically reducing loading times.

Discussion (3)

bigdoods profile image
John Egan

This is awesome. Is the load time super fast? I’d like to hear more about the pro’s vs con’s compared to a server based viewer? (FYI - You can also edit your posts)

agviegas profile image
Antonio González Viegas Author

Thanks! The load times depend on the device; for the current examples it takes around 5 seconds in computers, around 10 seconds in tablets and around 30-40 seconds in smartphones.

The aim is to optimize the logic with future implementations. In addition, saving logic for the processed IFCs scenes will be implemented, so the waiting will be necessary only the first time the IFC is loaded / updated with a device. Feel free to test it with your IFC files and drop issues / pull requests in github. 🙂

casak profile image
Domenico Casaccia

Hello agviegas I view on twitter your example.

Where I find this source code?