MCCB v1.3

The MCCB benchmark: what was tested, and what came out of it

Last updated:

MCCB (Minecraft Conversion Benchmark) is a public benchmark for world converters between Minecraft Java and Minecraft Bedrock. Every converter gets the same worlds, and then each item is checked, one by one, on the other side. This page explains what those worlds contain and what the measurements found. The MCCB repository remains the reference for the data and for redoing everything.

The result, plainly

WorldSwitch leads every tested world class

Among the four historical builds measured by MCCB, WorldSwitch 2.8.0 has the lowest FAIL count on every tested world, in both direct conversion and round trip. Only one comparison is tied; in every other comparison, WorldSwitch has strictly fewer FAILs than the other three builds.

6 lab worldsgenerated to cover many cases (class LAB)

12 FAIL-count comparisons: 11 wins, 1 tie, 0 losses.

WorldDirectRound trip
J01win0 vs 2win1,645 vs 1,650
J02win2 vs 5win37 vs 89
J03win0 vs 7win55 vs 58
J04win29 vs 35win0 vs 4
B01win0 vs 4win3 vs 13
B03tie0 vs 0win4 vs 37

B02, built by handin the Bedrock game (class MANUAL_NATIVE)

2 FAIL-count comparisons: 2 wins, 0 losses.

WorldDirectRound trip
B02win0 vs 22win5 vs 13

R01, real-world survivalplayed for at least four years (class REAL_WORLD_SURVIVAL)

2 FAIL-count comparisons: 2 wins, 0 losses.

WorldDirectRound trip
R01win8 vs 20,790win901 vs 23,849

MCCB never combines classes of worlds in one statistic: hence one tally per class, and no total. Each cell: WorldSwitch 2.8.0 FAILs, versus the lowest FAIL count among the three other builds. Win = strictly fewer FAILs than each of them; tie = as many as the best of them. Tie here: B03 in direct, with the older WorldSwitch build (2.7.80).

What was tested

Seven public test worlds: four Java worlds (J01 to J04) and three Bedrock worlds (B01 to B03). Six are lab worlds (class LAB), generated by a datapack or a behaviour pack to cover many cases at once; B02 was built by hand in the Bedrock game (class MANUAL_NATIVE), to get data written by the game itself. A converter is only judged on what the world really contains: a case announced by a generator but missing from the world does not count.

Blocks and block states

J01 · B01

Not just "which block", but also its state: facing, top or bottom half, water, lit or unlit. J01 enumerates every Java block state in a dedicated dimension of 144 tiles; B01 does the same on the Bedrock side, on what the world really contains.

  • J01: 1,733 hanging signs, 1,541 shelves, 962 signs, 642 banners, 562 heads
  • J01: 770 calibrated sculk sensors, 513 copper golem statues, 97 crafters
  • B01: beehives, campfires, lecterns, cauldrons, a structure block, a crafter

Inventories and chests

J01 · J02 · B02

The content of every slot: which item, how many, with which enchantments, name and durability. Double chests are read chest by chest, to check that each half keeps its own content.

  • J01: 1,536 different items and 460 component variants, stored in barrels
  • J01: 446 chests, 206 shulker boxes, potions, splash and lingering potions, tipped arrows
  • B02: netherite pickaxe, diamond spear, enchanted book, lime shulker box and lime bundle, copper hoe

Mobs, entities and trades

J02 · B02

Every mob must arrive at the right place, with its name, variant, age, equipment, its owner if tamed, and its trades if it is a villager.

  • J02: 134 entity types, including boats and rafts, 171 armor stands, 21 villagers, an allay, a camel, a breeze, nautiluses
  • B02: 32 villagers with their trades, 3 wolves, 2 cats, a parrot, a horse, 2 donkeys, 4 pillagers
  • B02: a wandering trader and its llama, a happy ghast, a thrown trident

Redstone, world data, dimensions

J03 · B03

Everything that is not a block or a mob: seed, time, weather, difficulty, game rules, scores, scheduled actions, chunk boundaries, the Nether and the End.

  • J03: hoppers, comparators, a dispenser, a dropper, daylight detectors, sculk sensors, 23 command blocks
  • J03: a Nether portal built at y = 200 in the Nether
  • B03: seed 26062026, the ender dragon and end crystals, piglins, hoglins, 31 trial spawners, 39 vaults, ticking areas

Commands

J04

400 stations and 3,989 command blocks. Each station carries, in a book and on a sign, what is expected of it: DIRECT (126, the command exists as is in Bedrock), ADAPTABLE (185, it must be rewritten), NO_EQUIVALENT (71 in the frozen v1.3 declarations, Bedrock would have nothing like it; 2 of them are now known to be wrong, see the known limitations) and ROUND_TRIP_ONLY (18, it can only come back intact). These declarations were written by the benchmark's author; they are public and can be challenged.

  • execute positioned 24 65 92 run setblock ~ ~ ~ minecraft:diamond_block
  • item replace block 24 64 474 container.1 with minecraft:golden_apple 2
  • summon minecraft:text_display 24 65 434 {Tags:["mccb_j04_167_target"],text:{text:"MCCB CMD-J-167"}}
  • data modify storage mccb_j04:cmd-j-267 value set value 10

Native Bedrock worlds

B01 · B02 · B03

The three Bedrock worlds were created in Bedrock 26.45, without going through Java. B02 was built entirely by hand in the game: its data is exactly what the game writes. B01 and B03 come from behaviour packs.

  • B01 holds only part of what its generator announced (6 functions out of 18): only what is present is judged
  • B03: its Nether content lab holds only lava or air; this is documented, not hidden
The seven public test worlds
WorldEditionThemeChecks
J01@1.1Java 26.3Blocks, states, items111,135
J02@1.0Java 26.2Mobs and entities2,542
J03@1.0Java 26.2World systems1,320
J04@1.0Java 26.3Commands35,172
B01@1.0Bedrock 26.45Blocks, states, items743
B02@1.0Bedrock 26.45Mobs, built by hand920
B03@1.0Bedrock 26.45World systems2,167

A "check" (an assertion in MCCB) is one precise point: a block's identity, its state, the content of one chest slot, a mob's position, a command's text… One missing block therefore fails several checks at once.

Direct conversion and round trip

Direct conversion

Java to Bedrock, or Bedrock to Java, once. The output world is read the way the target game reads it (for Java, after the game's own world upgrade). This is what a player switching editions gets.

Round trip

The converted world is converted back to its original edition, with the same converter, then compared with the starting world. This measures what gets lost on the way, and lets MCCB check things that cannot be compared across two different editions.

The two levels are never merged. A converter may set aside data the other edition cannot read and restore it on the way back: it can then be PARTIAL in direct and PASS in round trip. Both results are true; they answer different questions.

PASS, ADAPTED, PARTIAL, FAIL: what they mean

PASS preserved
What had to arrive did arrive, according to the check's rule.
ADAPTED adapted
Represented differently, with equivalent behaviour. Only three cases qualify: Java forced chunks and Bedrock ticking areas; block properties recomputed from their neighbours after a round trip; identical sign text broken into lines differently.
PARTIAL partial
A good part survived, but a real loss remains.
FAIL fail
Lost or wrong, while keeping it was reasonably possible.
NOT_APPLICABLE not applicable
The target edition has no counterpart. Decided in advance, from public references, never after looking at results.
NOT_EVALUATED not evaluated
This is not a verdict: MCCB cannot decide neutrally (no reference shared by both editions, or the game would have to run). Counted apart, with its reason, and never counted as PASS.

Which versions were measured

The four builds compared in MCCB v1.3
ConverterExact buildNote
WorldSwitch 2.8.0 (fd9b735)fd9b73568456efc0b772d958ebffbc5599aa8facHistorical build of 2026-09-29, clean working tree. This is not the current version of the website.
WorldSwitch 2.7.80 (0308840)030884039c78fd1c076fa42ba0975dd92c420b7eOlder build, measured before the 2.8.0 fixes. Kept to show the change.
Chunker 1.20.0chunker-cli-1.20.0.jarOfficial release, the latest on 2026-09-29. Only option: the target format (-f JAVA_26_3 or -f BEDROCK_R26_40).
je2be (core 8dfc4de)8dfc4de1ba5c7f72e804abea8663380c0dbd5680The engine of je2be-desktop 5.6.1, its latest release, through its official command-line tools compiled unmodified. Converted and graded after the freeze, with nothing changed.

Results on the 7 public worlds

Each cell gives the number of FAILs, then the details. The bar shows the share of each status among all the checks of the world. The total number of checks is the same for the four builds; only the number of evaluated checks can vary slightly, when a rule needs the game to decide.

  • preserved
  • adapted
  • partial
  • fail
  • not applicable
  • not evaluated

Direct conversion

MCCB v1.3, direct conversion, 7 public worlds (6 LAB and B02)
WorldWorldSwitch 2.8.0 (fd9b735)WorldSwitch 2.7.80 (0308840)Chunker 1.20.0je2be (core 8dfc4de)
J01111,135 checks0 FAILPASS 56,366 · ADAPTED 0 · PARTIAL 0
not applicable 15,618 · not evaluated 39,151
2 FAILPASS 56,364 · ADAPTED 0 · PARTIAL 0
not applicable 15,618 · not evaluated 39,151
634 FAILPASS 55,732 · ADAPTED 0 · PARTIAL 0
not applicable 15,618 · not evaluated 39,151
56,332 FAILPASS 34 · ADAPTED 0 · PARTIAL 0
not applicable 15,618 · not evaluated 39,151
J022,542 checks2 FAILPASS 1,643 · ADAPTED 3 · PARTIAL 0
not applicable 68 · not evaluated 826
5 FAILPASS 1,640 · ADAPTED 3 · PARTIAL 0
not applicable 68 · not evaluated 826
1,391 FAILPASS 258 · ADAPTED 0 · PARTIAL 0
not applicable 68 · not evaluated 825
1,618 FAILPASS 32 · ADAPTED 0 · PARTIAL 0
not applicable 68 · not evaluated 824
J031,320 checks0 FAILPASS 713 · ADAPTED 1 · PARTIAL 0
not applicable 90 · not evaluated 516
7 FAILPASS 706 · ADAPTED 1 · PARTIAL 0
not applicable 90 · not evaluated 516
318 FAILPASS 397 · ADAPTED 0 · PARTIAL 0
not applicable 90 · not evaluated 515
712 FAILPASS 26 · ADAPTED 0 · PARTIAL 0
not applicable 90 · not evaluated 492
J0435,172 checks29 FAILPASS 18,483 · ADAPTED 3 · PARTIAL 0
not applicable 124 · not evaluated 16,533
35 FAILPASS 18,477 · ADAPTED 3 · PARTIAL 0
not applicable 124 · not evaluated 16,533
2,038 FAILPASS 17,109 · ADAPTED 0 · PARTIAL 0
not applicable 124 · not evaluated 15,901
23,013 FAILPASS 33 · ADAPTED 0 · PARTIAL 0
not applicable 124 · not evaluated 12,002
B01743 checks0 FAILPASS 484 · ADAPTED 0 · PARTIAL 0
not applicable 13 · not evaluated 246
4 FAILPASS 480 · ADAPTED 0 · PARTIAL 0
not applicable 13 · not evaluated 246
39 FAILPASS 444 · ADAPTED 1 · PARTIAL 0
not applicable 13 · not evaluated 246
8 FAILPASS 476 · ADAPTED 0 · PARTIAL 0
not applicable 13 · not evaluated 246
B02920 checks0 FAILPASS 622 · ADAPTED 0 · PARTIAL 0
not applicable 51 · not evaluated 247
34 FAILPASS 587 · ADAPTED 0 · PARTIAL 1
not applicable 51 · not evaluated 247
273 FAILPASS 350 · ADAPTED 0 · PARTIAL 0
not applicable 51 · not evaluated 246
22 FAILPASS 601 · ADAPTED 0 · PARTIAL 0
not applicable 51 · not evaluated 246
B032,167 checks0 FAILPASS 547 · ADAPTED 2 · PARTIAL 1
not applicable 42 · not evaluated 1,575
0 FAILPASS 547 · ADAPTED 2 · PARTIAL 1
not applicable 42 · not evaluated 1,575
202 FAILPASS 347 · ADAPTED 1 · PARTIAL 0
not applicable 42 · not evaluated 1,575
34 FAILPASS 516 · ADAPTED 0 · PARTIAL 0
not applicable 42 · not evaluated 1,575

Round trip

MCCB v1.3, round trip, 7 public worlds (6 LAB and B02)
WorldWorldSwitch 2.8.0 (fd9b735)WorldSwitch 2.7.80 (0308840)Chunker 1.20.0je2be (core 8dfc4de)
J01111,135 checks1,645 FAILPASS 99,083 · ADAPTED 10,246 · PARTIAL 160
not applicable 0 · not evaluated 1
1,650 FAILPASS 99,078 · ADAPTED 10,246 · PARTIAL 160
not applicable 0 · not evaluated 1
7,751 FAILPASS 92,325 · ADAPTED 10,349 · PARTIAL 709
not applicable 0 · not evaluated 1
111,070 FAILPASS 64 · ADAPTED 0 · PARTIAL 0
not applicable 0 · not evaluated 1
J022,542 checks37 FAILPASS 2,315 · ADAPTED 0 · PARTIAL 181
not applicable 0 · not evaluated 9
89 FAILPASS 2,263 · ADAPTED 0 · PARTIAL 181
not applicable 0 · not evaluated 9
2,145 FAILPASS 373 · ADAPTED 0 · PARTIAL 16
not applicable 0 · not evaluated 8
2,474 FAILPASS 61 · ADAPTED 0 · PARTIAL 0
not applicable 0 · not evaluated 7
J031,320 checks55 FAILPASS 1,227 · ADAPTED 1 · PARTIAL 17
not applicable 0 · not evaluated 20
58 FAILPASS 1,224 · ADAPTED 1 · PARTIAL 17
not applicable 0 · not evaluated 20
559 FAILPASS 720 · ADAPTED 2 · PARTIAL 19
not applicable 0 · not evaluated 20
1,246 FAILPASS 54 · ADAPTED 0 · PARTIAL 0
not applicable 0 · not evaluated 20
J0435,172 checks0 FAILPASS 34,589 · ADAPTED 0 · PARTIAL 451
not applicable 0 · not evaluated 132
4 FAILPASS 34,585 · ADAPTED 0 · PARTIAL 451
not applicable 0 · not evaluated 132
3,357 FAILPASS 31,278 · ADAPTED 0 · PARTIAL 405
not applicable 0 · not evaluated 132
34,977 FAILPASS 63 · ADAPTED 0 · PARTIAL 0
not applicable 0 · not evaluated 132
B01743 checks3 FAILPASS 713 · ADAPTED 0 · PARTIAL 26
not applicable 0 · not evaluated 1
13 FAILPASS 703 · ADAPTED 0 · PARTIAL 26
not applicable 0 · not evaluated 1
75 FAILPASS 621 · ADAPTED 0 · PARTIAL 46
not applicable 0 · not evaluated 1
21 FAILPASS 696 · ADAPTED 0 · PARTIAL 25
not applicable 0 · not evaluated 1
B02920 checks5 FAILPASS 803 · ADAPTED 0 · PARTIAL 104
not applicable 0 · not evaluated 8
13 FAILPASS 796 · ADAPTED 0 · PARTIAL 103
not applicable 0 · not evaluated 8
376 FAILPASS 528 · ADAPTED 0 · PARTIAL 9
not applicable 0 · not evaluated 7
31 FAILPASS 811 · ADAPTED 0 · PARTIAL 71
not applicable 0 · not evaluated 7
B032,167 checks4 FAILPASS 763 · ADAPTED 0 · PARTIAL 97
not applicable 0 · not evaluated 1,303
43 FAILPASS 721 · ADAPTED 0 · PARTIAL 100
not applicable 0 · not evaluated 1,303
280 FAILPASS 498 · ADAPTED 0 · PARTIAL 86
not applicable 0 · not evaluated 1,303
37 FAILPASS 739 · ADAPTED 0 · PARTIAL 88
not applicable 0 · not evaluated 1,303

What can be said

  • On each of the 7 public worlds, taken one by one (the 6 lab worlds and B02, built by hand), in direct conversion and in round trip alike, WorldSwitch 2.8.0 (fd9b735) has the lowest number of FAILs of the four builds measured (tied with the older WorldSwitch build (2.7.80) on B03 in direct). This is a statement about that precise scope, not a score.
  • je2be (engine 8dfc4de): for the four Java worlds, this je2be version does not read the region location used by Java 26 (folders dimensions/minecraft/…/region) and writes a world with no terrain. Its very large FAIL counts on J01 to J04 come from that: MCCB classifies it as an input format this version does not support, not as a conversion error. On the Bedrock worlds (B01 to B03), this problem does not arise.
  • Chunker 1.20.0 declares entities unsupported. Its largest FAIL groups on these worlds: structure data not written (fortresses…), armor stands, score values, written book content and the "up" state of walls (J01).

What is still FAIL for WorldSwitch 2.8.0

Every FAIL of this build was classified by cause in the MCCB repository, at the first grading. The corrected closing grading adds two, shown on the last line. The main groups, 7 public worlds:

Remaining FAILs of WorldSwitch 2.8.0 (fd9b735), by behaviour
ChecksWorldWhat happensNature
1,142J01Door halves stored without their other half (672) and sculk sensors stored mid-activation (470) come back recomputedStates normal play does not keep
≈ 460J01Other J01 matrix states recomputed on the way back (button facing, mushrooms, big dripleaf tilt, pistons…)Mostly Bedrock recomputing or not storing the state
52J03The Nether portal built at y = 200 is lost on the round tripAbove Bedrock's Nether height; a round trip could carry it, WorldSwitch does not
37J02Java-only entities (displays, interaction, giant, illusioner, mannequin, spawner minecart) do not come backNo counterpart in direct; the round trip could keep them, WorldSwitch does not
29J04Command blocks emptied although the world declares a Bedrock equivalentReviewed one by one: 26 have no Bedrock equivalent (wrong declaration in the source world), 3 only approximate. Kept as FAIL, as frozen
12J01Pistons in motion (moving_piston)Transient state
1J02A wither stored with 300 health comes out with 450 (direct)Cannot be decided without the game
2J02, B02One entity's equipment (one in direct on J02, one in round trip on B02)Added by the corrected grading, which judges every item in its own slot

R01: real-world survival

Lab worlds cover many cases, but nobody really played in them. R01 is a real multiplayer survival world that has existed and been played for at least four years. It is measured with the same rules and the same four builds, from Bedrock to Java and back, and it is shown apart: its numbers are never added to the lab worlds'.

  • 4+ years of existence and play, in multiplayer survival
  • 3,529,881 checks per level, for every build
  • 111,256 entities and actors stored in the world
  • preserved
  • adapted
  • partial
  • fail
  • not applicable
  • not evaluated
R01: real-world survival, direct conversion (Bedrock to Java)
WorldWorldSwitch 2.8.0 (fd9b735)WorldSwitch 2.7.80 (0308840)Chunker 1.20.0je2be (core 8dfc4de)
R013,529,881 checks8 FAILPASS 1,913,373 · ADAPTED 54 · PARTIAL 18
not applicable 7,776 · not evaluated 1,608,652
21,370 FAILPASS 1,892,010 · ADAPTED 54 · PARTIAL 19
not applicable 7,776 · not evaluated 1,608,652
240,247 FAILPASS 1,673,243 · ADAPTED 68 · PARTIAL 0
not applicable 7,776 · not evaluated 1,608,547
20,790 FAILPASS 1,892,714 · ADAPTED 0 · PARTIAL 18
not applicable 7,776 · not evaluated 1,608,583
R01: real-world survival, round trip (Bedrock, Java, Bedrock)
WorldWorldSwitch 2.8.0 (fd9b735)WorldSwitch 2.7.80 (0308840)Chunker 1.20.0je2be (core 8dfc4de)
R013,529,881 checks901 FAILPASS 2,929,789 · ADAPTED 6 · PARTIAL 115,395
not applicable 0 · not evaluated 483,790
55,207 FAILPASS 2,874,935 · ADAPTED 6 · PARTIAL 115,997
not applicable 0 · not evaluated 483,736
349,538 FAILPASS 2,670,824 · ADAPTED 6 · PARTIAL 25,845
not applicable 0 · not evaluated 483,668
23,849 FAILPASS 2,898,064 · ADAPTED 6 · PARTIAL 124,276
not applicable 0 · not evaluated 483,686
  • 1,608,652 direct checks are not evaluated, for every build: mostly block states with no neutral cross-edition reference and old Bedrock palette entries. They count neither as PASS nor as FAIL.
  • On R01, WorldSwitch 2.8.0 (fd9b735) has the lowest number of FAILs of the four builds, in direct and in round trip. Its 901 round-trip FAILs split into 337 blocks, 251 items, 203 entities, 61 block entities, 46 on the player and 3 on the world. The classification made at the first grading traced them mostly to kelp and vine age, potion data, mob equipment and sign texts.
  • Chunker writes neither entities (the world holds 111,256 actors) nor structure data; je2be notably loses Bedrock sub-chunks made of a single block (4,096 checks per level in the sample).
  • Reproducibility limit. The historical file used for grading is a sanitised copy of the world: player identity records and third-party packs removed, player texts reviewed. It still held a few Xbox account identifiers (XUIDs), in sign and book fields; it stays private. The public R01 file is a separate, pseudonymised derivative (those identifiers are replaced with pseudonyms in it), prepared for publication with the players' permission; it will be made available when access to the GitHub repository is restored. It will allow anyone to convert R01 again and grade it with the frozen tools, but not to redo the historical grading identically, which relies on the private file; and the equivalence of the two files has not been re-measured with the corrected grading.

Intrinsic differences between Java and Bedrock

Java and Bedrock are not the same game under the hood. Some things exist on one side only: when they have no counterpart, MCCB declares them "not applicable" in advance and does not count them as failures. Other losses are unavoidable but still counted, because the data really disappears; they then hit every converter, and a FAIL of that kind does not mean a converter is buggy.

No counterpart: not applicable, not counted

  • Bedrock has no datapack dimensions, no world border, no /data, /bossbar, /team, /attribute or /advancement, no scheduled functions and no command storage.
  • Java has no ticking areas (forced chunks are the closest equivalent, hence ADAPTED) and no Education Edition blocks.
  • Java-only entities: displays, interaction, marker, giant, illusioner, mannequin, furnace and spawner minecarts, spectral arrow. Java-only blocks: test blocks, Java 26.x concrete slabs and stairs.

Unavoidable losses, counted for everyone

  • Bedrock's Nether ends at y = 127: anything built higher in a Java Nether cannot be carried.
  • Cauldrons have 3 levels in Java and 6 in Bedrock; Java cannot store a potion or dyed water in a cauldron.
  • Java doors cannot hold water; Bedrock floor buttons have no facing; Bedrock decorated pots have no cracked state.
  • Some mobs have a different maximum health: 300 for the wither in Java, 600 in Bedrock.

Known limitations of the benchmark

J04: two /recipe stations wrongly declared "no equivalent"

Stations CMD-J-332 (recipe give @p minecraft:crafting_table) and CMD-J-333 (recipe take @p minecraft:stick) were frozen as NO_EQUIVALENT. A recent product analysis shows that Bedrock does have both recipes (minecraft:WorkBench_recipeId for the crafting table, minecraft:stick for the stick). In direct conversion, these two checks are therefore not applicable for all four builds: the declaration created no FAIL, for any converter. It did, however, spare WorldSwitch two, since both measured WorldSwitch builds emptied these commands. v1.3 stays frozen as is; the declaration will be fixed in a future version of the benchmark.

What MCCB v1.3 does not test

  • Behaviour in game: no command is run, no redstone runs, no mob is observed. The only automatic check: does the Java 26.3 game accept to open the Java world?
  • Very old worlds (pre-1.18 formats), very large worlds, speed and memory.
  • Maps and their pixels, biomes, light, resource and behaviour packs, add-ons and experimental features.
  • Multiplayer identity mapping (which Bedrock player is which Java account).

Evidence, data and reproducibility

This page presents the results; the evidence lives in the public MCCB repository: source worlds and their fingerprints, the rule of every check, the reading and grading tools, and line-by-line results, with the observed value behind each verdict.

The numbers on this page come from the corrected closing grading of MCCB v1.3 (results commit eaabb07, grading from commit 2027179). It takes exactly the 64 converter outputs of the first grading, without running any conversion again, with stricter rules applied to everyone: 302 verdicts change on the 7 public worlds and 137,804 on R01, all in the stricter direction, none to PASS. The first grading is kept unchanged as a record.

Repository: github.com/Twizzew/minecraft-conversion-benchmark

The GitHub account hosting this repository is currently suspended, so the link above does not respond for now. The v1.0 source worlds had been published there on 2026-09-15. The latest v1.3 closing artifacts and the reproducibility evidence will be published there as soon as access to the GitHub account is restored. No date can be given.

Want to know what WorldSwitch converts today?

See what converts