Skip to content

Open source JavaScript SDK for viewing high-detail, full-precision 3D BIM and AEC models in the Web browser.


Notifications You must be signed in to change notification settings


Repository files navigation


npm version CodeSee

xeokit is a JavaScript software development kit created by xeolabs for viewing high-detail, full-precision 3D engineering and BIM models in the browser.



npm i @xeokit/xeokit-sdk


The xeokit SDK lets us develop our own browser-based BIM viewer, which we can fully customize and extend with plugins. Let's create a Viewer with a WebIFCLoaderPlugin to view a IFC model in the browser, then view a sample IFC model from the Open IFC Model Database.

This is just one way to load our models into xeokit. We can also load multiple models from other formats, including CityJSON, glTF, LAZ and OBJ, as well as xeokit's own native highly-compressed XKT format, which we can pre-convert offline from other formats.

<!doctype html>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>xeokit Example</title>
        body {
            margin: 0;
            width: 100%;
            height: 100%;
            user-select: none;

        #xeokit_canvas {
            width: 100%;
            height: 100%;
            position: absolute;
            background: lightblue;
            background-image: linear-gradient(lightblue, white);
<canvas id="xeokit_canvas"></canvas>
<script id="source" type="module">

    import {WebIFCLoaderPlugin, Viewer} from
    import * as WebIFC from "";
    const viewer = new Viewer({
        canvasId: "xeokit_canvas",
        transparent: true,
        dtxEnabled: true
    }); = [-3.933, 2.855, 27.018]; = [4.400, 3.724, 8.899]; = [-0.018, 0.999, 0.039];

    const IfcAPI = new WebIFC.IfcAPI();

    IfcAPI.Init().then(() => {
        const ifcLoader = new WebIFCLoaderPlugin(viewer, {

        const model = ifcLoader.load({
            src: "Duplex.ifc",
            edges: true