ionCube has shipped six major encoder generations that you are still likely to meet in the wild, from v10 to v15. Which one produced your file decides whether it can be decoded, how long that takes, and how faithful the result will be.
Reading the version from the file
Open the encoded file in a text editor and look at the first two lines. Older encoders announce themselves fairly directly, and the loader requirement usually names a minimum version. If the header only says a loader is required without a number, the size and shape of the encoded block still narrow it down — that identification is the first thing our pipeline does on upload.
What changed across the generations
v10 and v11 — the long tail
Targeting PHP 5.3 through 7.4, these are the versions behind most legacy CMS plugins and older billing systems. They are the best understood and decode most reliably. If you are recovering a system that has been running untouched since 2018, this is probably what you have.
v12 and v13 — the current workhorses
Covering roughly PHP 5.6 to 8.2, these introduced stronger opcode transformations. Decoding is still dependable, but reconstructed control flow can look less like idiomatic PHP: expect more temporary variables and flattened conditionals.
v14 and v15 — the recent ones
Aimed at PHP 7.2 through 8.4. Each generation makes the encoded representation less directly related to the original statements, which is exactly the point of an encoder. Support arrives later for these and success rates matter more, which is why we publish ours.
Version support is not a yes or no
A decoder that claims “all versions supported” is telling you something about its marketing rather than its engine. Real coverage varies by encoder build, by the PHP version targeted, and sometimes by which optional encoder features were used — obfuscation of names, licence checks, or encrypted string tables all change the result.
This is why our version coverage page shows counts and success rates from actual jobs on the service instead of a table of ticks. A version with a hundred successful decodes behind it is a different claim from one that has never been tried.
PHP target versus encoder version
These are two different numbers and mixing them up causes a lot of confusion. The encoder version — v13.3, say — is the tool that produced the file. The PHP target is the runtime the file was built to run on. A v13 encoder can produce files for PHP 7.4 or 8.2, and those files behave differently after decoding: the 8.2 output may contain typed properties and enums that simply cannot appear in the 7.4 one.
What to do with an unlisted version
Send a sample. The free demo decodes a file without an account, which is the fastest way to find out where you stand — and it costs nothing to discover that your file is a v11 that decodes perfectly rather than the v15 you feared.
If it genuinely is not supported yet, tell us. Version coverage is driven by what customers actually send, and a file we cannot handle today is the most useful thing you can give us.