AI Model File Viewer & Safety Scan (GGUF, Safetensors, ONNX)
See what a model file holds — and whether loading it can run code — before you load it.
Try before you buy.
- Free preview: the summary card (format, architecture, parameters, size, quantisation, context length, safety verdict) and the first tensors (up to 20).
- Locked until you unlock it: download.
- Unlock: Pro pass, ₹179 for 30 days or ₹79 for 1 week, a one-time payment that never renews. Unlock: Pro pass, $5.99 for 30 days or $2.99 for 1 week, a one-time payment that never renews.
Ways to unlock shows how to get the full result.
Printing this result is locked in the free preview.
Model file
Summary
Safety
Parameters by part
Tensors
Shapes are written slowest dimension first, as PyTorch writes them (GGUF stores them the other way round). Parts are worked out from tensor names.
By type
Metadata
Chat template
The Jinja template the model’s runtime fills with the conversation. Runtimes that render it outside a sandbox can be attacked through it, which is why the safety check above reads it.
ONNX graph
What the pickle imports
Every callable a pickle names is imported when it is loaded, and those it calls run. The list comes from reading the opcodes; nothing was run.
Compare with another file
Locked in the free preview. Opens the ways to unlock this result.
Locked in the free preview. Batch runs unlock with a pass.
Locked in the free preview. Query results unlock with a pass.
About the AI Model File Viewer & Safety Scan (GGUF, Safetensors, ONNX)
Open a model file straight from your disk and see what it is before you load it anywhere: the format, the architecture, the number of parameters, the quantisation and bits per weight, the context length, every tensor with its shape, type and size, and the file’s metadata. Only the headers are read — slices of the file, never the whole of it — so a multi-gigabyte model opens in seconds, and nothing is uploaded.
It reads GGUF (versions 2 and 3: all the key-value metadata, the tokenizer and the chat template, and the ggml type of every tensor), safetensors (the JSON header, checked for gaps and wrong sizes, and the model.safetensors.index.json of sharded models), ONNX (opsets, inputs and outputs, initializers, the operator counts and the nodes in order) and PyTorch checkpoints and pickles (.pt, .pth, .bin, .ckpt, .pkl). Open two files to compare them tensor by tensor.
The safety scan matters most for pickles: loading one imports and calls whatever it names. The scanner reads the opcodes without running anything, lists every imported callable and flags those that can run commands or reach the system; for GGUF it checks the chat template for template-injection tricks. Without a pass the result is a free preview: the summary card with the verdict and the first tensors; the full tensor table and its CSV, the metadata, the chat template, the ONNX graph, the full import list and the comparison unlock with a Pro pass.
How to use it
- Drop a model file here or choose one. For a sharded safetensors model, choose
model.safetensors.index.jsontogether with its shard files. - Read the summary: format, architecture, parameters, size, quantisation and context length, with the safety verdict next to it.
- If the verdict says dangerous or unknown, do not load the file until you know where it came from; with a pass the full list shows every callable it imports.
- Search the tensor table by name or type, or filter it by part of the network (embeddings, attention, MLP, norms, output).
- To compare two versions of a model, choose the second file under Compare with another file.
- With a Pro pass, download the tensor table as CSV; the free preview shows the summary and the first tensors.
Examples
a Llama-style model saved as Q4_K_M
Architecture llama, the parameter count and size, Q4_K_M with most tensors in Q4_K and some in Q6_K, a little over 4.5 bits per weight, and the context length the file declares
a .bin file from an unknown source
Dangerous: the pickle imports a callable that can run code or reach the system (posix.system). Do not load it.
model.safetensors.index.json with its shard files
Every tensor of every shard in one table, the dtype totals, and any gap or size mismatch in a shard’s header
Common uses
- Checking which quantisation a GGUF download really has, and whether it will fit in your GPU’s memory.
- Making sure a checkpoint from an unknown source does not run code when loaded.
- Reading a model’s architecture facts (layers, heads, key-value heads, RoPE base) without loading it.
- Finding the inputs and outputs of an ONNX model before writing the code that calls it.
- Seeing what changed between two fine-tuned versions of the same model.
How the formats are read
- GGUF: the magic
GGUF, the version, the tensor and key-value counts, every key-value pair (long arrays such as the vocabulary are counted, not stored) and every tensor’s name, dimensions, ggml type and offset. Sizes come from the type’s block layout: Q4_0 packs 32 weights into 18 bytes (4.5 bits each), Q4_K 256 into 144 (4.5), Q6_K 256 into 210 (6.5625), Q8_0 32 into 34 (8.5).general.file_typegives the label people use, such as Q4_K_M. - safetensors: an 8-byte little-endian header length, then the JSON header with each tensor’s dtype, shape and byte range; the format forbids gaps and overlaps, so the viewer checks both, and that each range has exactly the bytes its dtype and shape need.
- ONNX: the ModelProto read from the protobuf encoding field by field; weight bytes are skipped, so only the graph is read.
- PyTorch: a checkpoint is a ZIP archive whose
data.pklis a pickle describing the tensors (older checkpoints are a series of pickles); tensor names, types and shapes are rebuilt from the pickle’s structure without running it.
What the safety scan checks
- Pickles (
.pt,.pth,.bin,.ckpt,.pkl): every callable the pickle imports throughGLOBAL,STACK_GLOBALorINST, and whether it calls it while loading. Callables are rated with the lists of the open-source scanner picklescan: modules and functions that run commands, open files or sockets or evaluate code (os,subprocess,builtins.eval,runpy,socketand others) are dangerous; the tensor-rebuilding functions and storage classes of plain PyTorch and NumPy weights are expected; everything else is unknown. Imports that cannot be worked out without running the pickle count as dangerous. - GGUF: a GGUF file holds no code, but its chat template is a Jinja program that runtimes fill in. A runtime that renders it outside a sandbox can be attacked through it (as CVE-2024-34359 showed for llama-cpp-python 0.2.30 to 0.2.71), so the scan flags templates that reach Python internals, call commands or load other templates.
- safetensors and ONNX hold data and graphs, not Python code; an ONNX runtime may still load custom operators an application registers.
The scan lowers the risk of loading an untrusted file; it does not remove it. A pickle can do harm with callables no list names, so load pickles only from sources you trust, prefer safetensors, and keep torch.load(…, weights_only=True), the default of current PyTorch, which allows only tensors, primitive types and dictionaries.
Sources
- GGUF specification — the file format and the ggml types
- ggml-common.h — the block layouts behind bits per weight
- safetensors format — the header and its rules
- onnx.proto — the ONNX model structure
- pickle — Python object serialization and pickletools — the opcodes
- picklescan — the dangerous and expected import lists
- torch.load — weights_only
- GHSA-56xg-wfcc-g829 — chat-template injection in GGUF metadata
Limitations
- The page reads headers and pickles; it does not run the model, check that the weights are sensible, or render the chat template with a conversation.
- Tensor parts (embeddings, attention, MLP, norms) are worked out from tensor names, so unusual names land in “Other”.
- GGUF version 1 files, Keras files, TensorFlow SavedModels, TorchScript archives’ code and ONNX’s flatbuffer format (.ort) are not read.
- Pickles are read up to their first 256 MB; the tensors of a pickle that is not a state dict (a whole model object, for example) may not all be listed.
- The ONNX node list shows up to 1,000 nodes on the page, and the reader keeps the first 5,000.
- The safety scan rates callables by lists: an unknown callable is not proof of harm, and an expected one is not proof of safety.
Privacy
On this device: nothing is sent
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
What do I get without a pass?
Without a pass, AI Model File Viewer & Safety Scan (GGUF, Safetensors, ONNX) shows the summary card (format, architecture, parameters, size, quantisation, context length, safety verdict) and the first tensors (up to 20). Until you unlock it, the result can’t be downloaded. A Pro, Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.
Is my model uploaded?
No. The file is read in your browser, in slices, by a background worker of this page. Nothing is sent anywhere, so private and very large models are fine.
Why can a model file run code?
Pickle files (.pt, .pth, .bin, .ckpt, .pkl) are Python programs for rebuilding objects: loading one imports every callable it names and calls the ones it calls, which can include os.system. Formats like safetensors and GGUF store only data, which is why they are recommended for sharing weights.
What do “dangerous”, “unknown” and “expected” mean?
Dangerous: a callable that can run commands, open files or connections, or evaluate code (or one the scanner could not work out). Expected: the functions and storage classes plain PyTorch and NumPy weights need. Unknown: anything else — often a library’s own classes in a whole-model pickle; check where the file came from before loading it.
What does the free preview show?
The summary card — format, architecture, parameter count, size, quantisation, bits per weight, context length — with the safety verdict (dangerous imports and template warnings are always named), and the first tensors of the list (up to 20, never more than half). The full tensor table and its CSV, the metadata, the chat template, the ONNX graph, the full import list and the comparison of two files need a Pro pass.
How is the parameter count worked out?
As the sum of the products of every tensor’s dimensions. Bits per weight are the tensors’ bytes times 8 divided by that count, so a Q4_K_M file comes out a little above 4.5 because some tensors keep a larger type.