Introduction
These are the models saved by Trimble’s SketchUp 2021 and every release since. SketchUp 2021 came out in November 2020, and its release notes, as quoted on SketchUp’s forum, announced “a re-build of the .SKP file format”, with “a significant reduction in file sizes”. SketchUp staff wrote on the forum that the format was reworked “to allow for forward compatibility”.
The SketchUp C API calls this the “versionless” file format. Its list of file versions
ends with SUModelVersion_SU2021, and its note says that from SketchUp 2021
SketchUp uses the same file format across versions, so that SketchUp 2021 can open a
file made in SketchUp 2022. So every release from 2021 on writes this one format: later
versions add to it, and earlier ones still open the result. A file can even be saved by
one release and then again by an older one, as the save history inside the files shows.
The file keeps the two strings that every SKP file starts with, then becomes a ZIP
archive. The thumbnails are PNG files, the materials and styles XML documents, and the
model itself a tree of tagged values in a member called model.dat. The
files examined for this site were saved by SketchUp 2022 (22.0.353) and
2023 (23.1.340); none from 2021, 2024, 2025 or 2026 was examined.
A file dropped on any page of this site opens in the explorer, which shows the
thumbnail and the preview picture, the save history, every member of the archive, the
materials with their colours and textures, and an outline of model.dat.
Structure
All numbers are little-endian.
0Signature the CString “SketchUp Model”32 bytes32Version the CString “{23.1.340}”: the SketchUp that saved the filevaries56VFF header “VFF” and four numbers13 bytes69ZIP archive to the end of the file; its offsets count from hereto the end…meta/model_thumbnail.png, meta/preview_thumbnail.png two picturesPNG…meta/meta.dat version, units and save historytagged values…materials/ one folder a material, with its texturesXML…thumbnails/ component thumbnailsPNG…styles/ the stylesXML…model.dat the modeltagged values…Central directory one record a membervaries…End record22 bytes
The archive is an ordinary ZIP with two particulars: its offsets count from the start of
the archive, not of the file, and every member is compressed with Deflate, the PNGs as
stored blocks so their bytes sit in the file as they are. See
ZIP archive. The tagged-value trees of
meta.dat and model.dat are on
model.dat and meta.dat; beyond the
first levels, model.dat is not decoded here.
Telling it apart
The explorer’s parser for this format checks, in order:
- the 32 bytes of “SketchUp Model” at the start, which every SKP file has;
- a version string in braces, such as
{23.1.340}; - the letters
VFFstraight after it; - a ZIP local header,
PK 03 04, 13 bytes after the start ofVFF; - a ZIP end record whose central directory is where it says, counting from the start of the archive (or, for other writers, from the start of the file).
A file that fails a check is turned down, and the explorer tries the parsers for the other SKP formats. Older SketchUp files go on after the version with a GUID and an MFC archive instead. A version below 21 with this layout is accepted but reported.
Variants
- SketchUp 3 to 2016 – the classic MFC CArchive file: a version map, a PNG thumbnail and the object stream
- SketchUp 2017 to 2020 – the classic file with persistent IDs on every entity and two more model fields
- SketchUp 2021 and later – the “versionless” format: a short header, then a ZIP archive
Links
Software
- SketchUp – Trimble’s 3D modelling program, which saves these files from version 2021 on (Windows, macOS, web, iPad)
Developers
- SketchUp SDK – Trimble’s library for reading and writing SKP files (C)
- OpenSKP – reverse-engineered reader and writer, which calls this the VFF format of SketchUp 2021 and later (Python, C#, TypeScript, Dart)
- skppy – reader and writer for both containers, with a Blender add-on; in beta (Python)
Reference
- SUModelVersion – the SketchUp C API’s list of file versions, with its note on the “versionless” format
- 2021 file format compatibility – SketchUp forum thread with the staff reply on forward compatibility (November 2020)
- Smaller files in SketchUp 2021 – SketchUp forum thread quoting the 2021 release notes on the rebuilt format
- OpenSKP binary format notes – OpenSKP’s reading of the tags in model.dat
- APPNOTE.TXT – PKWARE’s ZIP file format specification
- RFC 1951 – the Deflate compressed data format