Drop your pickle file here

or choose one from your device

Choose a file .pkl or .pickle · Maximum 25 MiB
Private by designSafe by default

Open Python Pickle (.pkl) Files Online

Open 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.

No uploadYour file never crosses the network
No signupUse it instantly, without an account
No file storageClosing the tab clears everything

A safer way to inspect

Readable data in.
No code runs.

01

Pick a file

We verify the extension and enforce a strict 25 MiB limit before parsing.

02

Inspect safely

A restricted parser reads supported data types. Python globals and constructors are blocked.

03

Read it as JSON

Your data opens in a collapsible JSON view. Search it, browse compatible tables, or export what converts cleanly.

Untrusted file protection

Inspection, never unpickling.

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

How to open a .pkl file online

  1. Choose or drop your file: Drag and drop any .pkl or .pickle file up to 25 MiB into the upload zone above.
  2. Local in-browser parsing: A sandboxed Web Worker decodes the Python pickle byte stream entirely inside your browser. No data is sent to a server.
  3. Inspect JSON, Table, or Tree: Explore nested dictionaries and lists, search keys and values, or view raw opcode structures.
  4. Export compatible data: Download the parsed data as JSON, or export detected record tables to CSV or Excel.

What is a Python pickle file?

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.

Convert pickle to JSON

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.

Why inspect pickle files without pickle.load()?

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.

Your file stays on your device

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

Everything you need to know about opening .pkl files

How do I open a .pkl file?

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.

Can I view a pickle file without installing Python?

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.

Can I convert a pickle file to JSON?

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.

Are pickle files safe to open?

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.

Does iHatePKL upload my file?

No. Your pickle file is processed locally in your browser and its contents are not uploaded during inspection or export.

Which pickle protocols are supported?

iHatePKL supports Python pickle protocols 0 through 5, covering pickle files created from early Python versions through Python 3.8 and newer.

Can I convert a pickle file to CSV or Excel?

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.

Why is CSV or Excel sometimes unavailable?

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.