<table align="center">
<tr>
<td valign="top">
<h1>
<img src="https://readme-typing-svg.demolab.com?font=JetBrains+Mono&weight=700&size=48&duration=2000&pause=5000&color=6366F1&vCenter=true&width=300&height=55&lines=IFClite" alt="IFClite">
</h1>
Open, view, and work with IFC files. Right in the browser.
</td>
<td width="120" align="center" valign="middle">
<img src="docs/assets/logo.png" alt="" width="100">
</td>
</tr>
</table>
<p align="center">
<a href="https://www.ifclite.com/"><img src="https://img.shields.io/badge/馃殌_Try_it_Live-ifclite.com-ff6b6b?style=for-the-badge&labelColor=1a1a2e" alt="Try it Live"></a>
</p>
<p align="center">
<a href="https://github.com/louistrue/ifc-lite/actions"><img src="https://img.shields.io/github/actions/workflow/status/louistrue/ifc-lite/release.yml?branch=main&style=flat-square&logo=github" alt="Build Status"></a>
<a href="https://github.com/louistrue/ifc-lite/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MPL--2.0-blue?style=flat-square" alt="License"></a>
<a href="https://www.npmjs.com/package/@ifc-lite/parser"><img src="https://img.shields.io/npm/v/@ifc-lite/parser?style=flat-square&logo=npm&label=parser" alt="npm parser"></a>
<a href="https://crates.io/crates/ifc-lite-core"><img src="https://img.shields.io/crates/v/ifc-lite-core?style=flat-square&logo=rust&label=core" alt="crates.io"></a>
</p>
---
## What is IFClite?
IFClite is an open-source toolkit for working with IFC files. It lets you load, view, query, and export BIM models from a web browser, a server, or a desktop app. No plugins or installs needed.
Try it at [ifclite.com](https://www.ifclite.com/) to see it in action.
- **View 3D models** in the browser with a fast WebGPU renderer
- **Extract data** like properties, quantities, spatial structure, and relationships
- **Check compliance** against IDS (Information Delivery Specification) rules
- **Generate 2D drawings** like floor plans, sections, and elevations from 3D
- **Collaborate** with BCF (BIM Collaboration Format) for issues and viewpoints
- **Export** to glTF, IFC, or Parquet
Works with **IFC4 / IFC4X3** and the new **IFC5 (IFCX)** format.
## Why IFClite?
- **Fast.** First triangles on screen in ~200ms. Geometry processing up to 5x faster than the next best option. See [benchmarks](docs/guide/performance.md).
- **Small.** ~260 KB gzipped. Designed to stay lightweight so your app stays lightweight.
- **Complete.** Full IFC4X3 schema (876 entities), IFC5, BCF, IDS, 2D drawings, federation, property editing, and export. Parsing is just the start.
- **Built for the web.** Rust + WASM core, WebGPU rendering, streaming pipelines, consistent TypeScript API across all packages.
## Get Started
Create a project in one command:
```bash
npx create-ifc-lite my-app
cd my-app && npm install && npm run parse
```
This parses an IFC file and logs what it finds. From here you can start building.
**Want a 3D viewer?** Pick a template:
```bash
npx create-ifc-lite my-viewer --template react # WebGPU viewer
npx create-ifc-lite my-viewer --template threejs # Three.js (WebGL)
npx create-ifc-lite my-viewer --template babylonjs # Babylon.js (WebGL)
```
**Want a server backend?**
```bash
npx create-ifc-lite my-backend --template server
cd my-backend && npm run server:start
```
**Or add to an existing project:**
```bash
npm install @ifc-lite/parser
```
```typescript
import { IfcParser } from '@ifc-lite/parser';
const parser = new IfcParser();
const result = await parser.parse(ifcBuffer);
console.log(`Found ${result.entityCount} entities`);
```
> See [Installation](docs/guide/installation.md) for all options including Cargo (Rust) and Docker.
## Choose Your Setup
IFClite runs in four different environments. Pick what fits:
| [**Browser (WebGPU)**](docs/guide/quickstart.md) | Viewing and inspecting models | Full-featured 3D viewer, runs entirely client-side |
| [**Three.js / Babylon.js**](docs/tutorials/threejs-integration.md) | Adding IFC support to an existing 3D app | IFC parsing + geometry, rendered by your engine ([Babylon.js](docs/tutorials/babylonjs-integration.md)) |
| [**Server**](docs/guide/server.md) | Teams, large files, repeat access | Rust backend with caching, parallel processing, streaming |
| [**Desktop (Tauri)**](docs/guide/desktop.md) | Offline use, very large files (500 MB+) | Native app with multi-threading and direct filesystem access |
**Not sure?** Start with the browser setup. You can add a server or switch to Three.js/Babylon.js later.
## What Do I Install?
You don't need all 25 packages. Here's what to grab for common tasks:
| 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: [API Reference](docs/api/typescript.md) (25 TypeScript packages, 4 Rust crates)
## Examples
Ready-to-run projects in the [`examples/`](examples/) folder:
- **[Three.js Viewer](examples/threejs-viewer/)** - IFC viewer using Three.js (WebGL)
- **[Babylon.js Viewer](examples/babylonjs-viewer/)** - IFC viewer using Babylon.js (WebGL)
## Documentation
| **Start here** | [Quick Start](docs/guide/quickstart.md) 路 [Installation](docs/guide/installation.md) 路 [Browser Requirements](docs/guide/browser-requirements.md) |
| **Guides** | [Parsing](docs/guide/parsing.md) 路 [Geometry](docs/guide/geometry.md) 路 [Rendering](docs/guide/rendering.md) 路 [Querying](docs/guide/querying.md) 路 [Exporting](docs/guide/exporting.md) |
| **BIM features** | [Federation](docs/guide/federation.md) 路 [BCF](docs/guide/bcf.md) 路 [IDS Validation](docs/guide/ids.md) 路 [2D Drawings](docs/guide/drawing-2d.md) 路 [Property Editing](docs/guide/mutations.md) |
| **Tutorials** | [Build a Viewer](docs/tutorials/building-viewer.md) 路 [Three.js](docs/tutorials/threejs-integration.md) 路 [Babylon.js](docs/tutorials/babylonjs-integration.md) 路 [Custom Queries](docs/tutorials/custom-queries.md) |
| **Deep dives** | [Architecture](docs/architecture/overview.md) 路 [Data Flow](docs/architecture/data-flow.md) 路 [Performance](docs/guide/performance.md) |
| **API** | [TypeScript](docs/api/typescript.md) 路 [Rust](docs/api/rust.md) 路 [WASM](docs/api/wasm.md) |
## Contributing
We welcome contributions! No Rust toolchain needed, WASM comes pre-built.
```bash
git clone https://github.com/louistrue/ifc-lite.git
cd ifc-lite
pnpm install && pnpm build && pnpm dev # opens viewer at localhost:5173
```
See the [Contributing Guide](docs/contributing/setup.md) and [Release Process](RELEASE.md) for details.
## Community Projects
| [bimifc.de](https://bimifc.de/) | Pure Rust/Bevy IFC viewer by [@holg](https://github.com/holg) |
*Built something with IFClite? Open a PR to add it here!*
## License
[Mozilla Public License 2.0](LICENSE)
---
<p align="center">
Made with 鉂わ笍 for the AEC industry
</p>