IFClite Documentation¶
-
Get Started
Create a project with
create-ifc-liteor parse your first IFC file in under 5 minutes. -
Three.js & Babylon.js
Use IFClite with Three.js or Babylon.js. WebGL, no WebGPU required.
-
Server Setup
Rust server with caching and parallel processing for teams and large files.
-
Desktop App
Native Tauri app for offline use, large files, and multi-threaded performance.
What is IFClite?¶
IFClite is an open-source toolkit for working with IFC (Industry Foundation Classes) files. It runs in the browser, on a server, or as a native desktop app.
What you can do with it:
- View 3D models in the browser with a WebGPU renderer
- Use your own 3D engine - parse IFC geometry and render it with Three.js, Babylon.js, or any WebGL engine
- Extract data like properties, quantities, relationships, and spatial structure
- Validate models against IDS (Information Delivery Specification) rules
- Generate 2D drawings like floor plans, sections, and elevations from 3D models
- Collaborate with BCF support for issues, viewpoints, and comments
- Export to glTF, IFC, or Parquet
- Work with multiple models at once with federated selection and visibility
Supports IFC4 / IFC4X3 (876 entities) and IFC5 (IFCX) JSON format. ~260 KB gzipped.
Choose Your Setup¶
Not sure how to use IFClite? This diagram helps you pick:
| Setup | Best for | Getting started |
|---|---|---|
| Browser (WebGPU) | Viewing and inspecting models, client-side only | Quick Start |
| Three.js | Adding IFC to an existing Three.js app (WebGL) | Three.js Tutorial |
| Babylon.js | Adding IFC to an existing Babylon.js app (WebGL) | Babylon.js Tutorial |
| Server | Teams, large files (100 MB+), caching for repeat access | Server Guide |
| Desktop (Tauri) | Offline use, very large files (500 MB+), multi-threading | Desktop Guide |
Quick Examples¶
Or in your own code:
Or set it up manually:
import { IfcParser } from '@ifc-lite/parser';
import { GeometryProcessor } from '@ifc-lite/geometry';
import { Renderer } from '@ifc-lite/renderer';
const renderer = new Renderer(canvas);
await renderer.init();
const geometry = new GeometryProcessor();
await geometry.init();
const parser = new IfcParser();
const store = await parser.parseColumnar(buffer);
const geometryResult = await geometry.process(new Uint8Array(buffer));
renderer.loadGeometry(geometryResult);
renderer.fitToView();
renderer.render();
npx create-ifc-lite my-viewer --template threejs # Three.js
npx create-ifc-lite my-viewer --template babylonjs # Babylon.js
These templates include a working viewer. See the full tutorials:
import { IfcServerClient } from '@ifc-lite/server-client';
const client = new IfcServerClient({ baseUrl: 'https://your-server.com' });
// Caches automatically, skips upload if the file was processed before
const result = await client.parseParquet(file);
// Or stream geometry for large files
for await (const event of client.parseStream(file)) {
if (event.type === 'batch') {
renderer.addMeshes(event.meshes);
}
}
What Do I Install?¶
You don't need all packages. Here's what to grab for common tasks:
| I want to... | Packages |
|---|---|
| Parse an IFC file | @ifc-lite/parser |
| View a 3D model (WebGPU) | + @ifc-lite/geometry + @ifc-lite/renderer |
| Use Three.js or Babylon.js | + @ifc-lite/geometry (you handle the rendering) |
| Query properties and types | + @ifc-lite/query |
| Validate against IDS rules | + @ifc-lite/ids |
| Generate 2D drawings | + @ifc-lite/drawing-2d |
| Export to glTF / IFC / Parquet | + @ifc-lite/export |
| Connect to a server backend | + @ifc-lite/server-client |
Full list: TypeScript API Reference (25 packages) · Rust API Reference (4 crates)
Browser Support¶
Chrome 113+ · Edge 113+ · Firefox 127+ · Safari 18+ (all with WebGPU)
Three.js and Babylon.js integrations work with WebGL and don't require WebGPU. See Browser Requirements for details.
Next Steps¶
-
npm, Cargo, Docker, or create-ifc-lite
-
Parse your first IFC file
-
Build an IFC viewer with Three.js
-
Set up server-based processing
-
Native app for large files
-
Step-by-step viewer tutorial
-
Load multiple models at once
-
Benchmarks, bundle size, and optimization details
-
How IFClite works under the hood