
WordPress does not let you upload 3D files (“Sorry, you are not allowed to upload this file type”), and has no way to show one. Pratiks 3D Model Embedder adds both: upload the file like an image, insert the 3D Model block, publish. Visitors can turn the model around with the mouse or a finger.
Upload 3D files safely
GLB, glTF, STL, OBJ and USDZ files can be uploaded by anyone who can upload images. Each file is checked by its content, not just its name: a .glb must really be a binary glTF 2.0 file, an .stl must really be an STL, and text files that carry PHP or a script tag are refused. When a file is refused, you are told why.
STL and OBJ are converted for you
STL files (from 3D printing and CAD) and OBJ files are converted to GLB when you upload them. The conversion streams the file, so large models do not run the server out of memory. STL files are turned upright and scaled from millimetres, so they look right straight away. The original file is kept.
The 3D Model block
- Upload a model, pick one from the Media Library, or insert one from a URL.
- The editor shows the real model, so what you see is what visitors get.
- Alternative text, a caption, height and background colour.
- Rotate automatically, let visitors rotate, let visitors zoom (off by default, so scrolling the page never gets stuck on the model), play animations.
- Brightness and shadow.
- Save current camera angle to start from the view you like.
- Use current view as poster saves a picture of the model. It shows while the model loads and becomes the model’s thumbnail in the Media Library.
- Load when scrolled into view (default), right away, or only when the visitor clicks Load 3D model.
- Optional augmented reality (“View in your space”) on phones and tablets, with an optional USDZ file for iPhone and iPad.
Light on your site
The viewer is Google’s open source <model-viewer>, bundled with the plugin together with its decoders for compressed models. Nothing is loaded from a CDN, and the viewer only loads on pages that show a 3D model.
For developers
Filters and actions for every default, limit and message, JavaScript hooks in the editor, wp pratiks-3d-model-embedder WP-CLI commands, REST routes, and Abilities API abilities (WordPress 6.9+) so AI agents can list models, convert them and set posters. See the reference.
Free and open source under the GPL. No pro version, no upsells, no ads in wp-admin, no tracking.
External services
The plugin makes no requests to other services itself. The viewer, its decoders and every file it uses are bundled.
When you turn on augmented reality in a block, visitors on Android who tap “View in your space” are handed over to Google’s Scene Viewer app (part of Google Play Services), which downloads the model from your site to show it. The model’s address is passed to that app; nothing else is sent. This only happens when a visitor taps the button. Google’s terms of service and privacy policy apply. On iPhone and iPad, AR Quick Look runs on the device.
Source code and libraries
The plugin’s own code is not minified. Its source, tests and build tools are on GitHub.
Bundled libraries, unchanged from their releases:
- model-viewer 4.4.0 by Google, Apache-2.0:
assets/vendor/model-viewer/model-viewer-umd.min.jsisdist/model-viewer-umd.min.jsfrom the @google/model-viewer npm package. Readable source: packages/model-viewer/src. - Draco decoder and Basis Universal (KTX2) transcoder from three.js r183, MIT (sources: Draco, Basis Universal).
- meshoptimizer 1.3.0 decoder, MIT.
Screenshots

A 3D model in a post, with its caption.

The 3D Model block in the editor, with its settings.

Uploading an STL file: it is converted to GLB and shown right away.

3D models in the Media Library, with posters as thumbnails.