Pick a file
We verify the extension and enforce a strict 25 MiB limit before parsing.
or choose one from your device
.pkl or .pickle · Maximum 25 MiBOpen a .pkl or .pickle file and inspect its contents directly in your browser. iHatePKL displays the data as readable JSON, lets you search and explore nested values, and can export compatible data without uploading your file to a server.
A safer way to inspect
We verify the extension and enforce a strict 25 MiB limit before parsing.
A restricted parser reads supported data types. Python globals and constructors are blocked.
Your data opens in a collapsible JSON view. Search it, browse compatible tables, or export what converts cleanly.
Untrusted file protection
Pickle files can contain instructions that execute code in Python. iHatePKL does not run Python and never imports classes, calls functions, or invokes pickle constructors. Unsafe instructions are displayed as blocked objects.
Developer Guide & Reference
.pkl or .pickle file up to 25 MiB into the upload zone above.Python’s pickle module serializes Python object hierarchies into a binary byte stream. It is commonly used for caching program state, sharing machine learning model weights, and saving complex data structures.
Because pickle is a binary bytecode format rather than plain text, opening a .pkl file in a standard text editor yields unintelligible characters. iHatePKL supports pickle protocols 0 through 5 without requiring Python to be installed.
Lists generally map to JSON arrays. Dictionaries can map to JSON objects when their keys can be represented as strings. Python-specific types may require a JSON-compatible representation.
The serializer visits each unique node once and avoids repeatedly expanding shared references. iHatePKL serializes non-finite numeric values such as NaN and Infinity as null to keep exported output valid JSON. JSON export is attempted within the practical limits of your browser and device, with no arbitrary file-size cap.
Python’s pickle.load() executes constructor instructions and object reconstruction callbacks embedded in the stream. If an untrusted pickle file contains malicious opcodes (like posix.system or subprocess.Popen), loading it in Python can compromise your system.
iHatePKL evaluates opcodes in a restricted TypeScript environment without executing Python code, turning dangerous constructors into inert inspection nodes so you can safely audit what a file contains.
Pickle files may contain private datasets, cached application state, or proprietary model data. iHatePKL processes your pickle file locally in your browser and its contents are not uploaded during inspection or export. Deserialization happens exclusively on your CPU using the HTML5 File API and Web Workers, protected by a strict Content Security Policy with connect-src 'none'.
Frequently Asked Questions
Drag and drop your .pkl or .pickle file into the uploader above or click “Choose a file”. iHatePKL immediately processes the file in your browser and opens its data in the interactive JSON viewer.
Yes. iHatePKL runs entirely inside modern web browsers using a TypeScript parser. You do not need Python, Anaconda, or any terminal tools installed on your computer.
Yes. The viewer formats nested structures into standard JSON. You can copy the formatted text to your clipboard or download a complete .json file using the Export menu.
Opening untrusted pickles with Python’s pickle.load() can be hazardous because the format supports arbitrary code execution. iHatePKL avoids this risk by reading the format safely without executing Python code.
No. Your pickle file is processed locally in your browser and its contents are not uploaded during inspection or export.
iHatePKL supports Python pickle protocols 0 through 5, covering pickle files created from early Python versions through Python 3.8 and newer.
Yes, provided your pickle contains tabular data (such as a list of uniform dictionaries or columnar arrays). Compatible datasets can be exported directly as CSV or XLSX.
Tabular formats require regular rows and columns. If your pickle contains arbitrary object graphs, scalar values, or deeply non-uniform hierarchies, tabular export options are omitted and JSON export is provided instead.