How to edit a Minecraft manifest.json on Android
A Bedrock add-on that the game refuses to import is usually a manifest problem, not a content problem. The manifest is a small JSON file, which means you can read it and fix it on the same phone you play on.
Short answer
Extract the pack into ordinary storage — a .mcpack is a zip file with a different extension — then open manifest.json in a JSON editor, change the fields you need and save. Every pack needs its own header UUID, and every module inside it needs a different one again. A reused UUID is what breaks most imports.
Get Sonnet free Opens the manifest as a tree you can tap to edit.
Where manifest.json lives in an add-on
Every behavior pack, resource pack, skin pack and world template carries exactly one manifest.json at the top of its folder. It is the file Minecraft reads first: it says what the pack is, what version it is and what it depends on. If it is wrong, nothing else in the pack gets a chance to run.
Packs you download arrive as .mcpack or .mcaddon files. Those are zip archives with a renamed extension, so a file manager that handles zips will open them. The Bedrock Wiki’s Android guide names ZArchiver, X-Plore and Total Commander for that job. Extract the pack into a normal folder you control, such as Downloads or a Minecraft Packs folder of your own, and edit it there.
Packs already installed in the game sit under Android/data/com.mojang.minecraftpe/…/games/com.mojang/, in behavior_packs and resource_packs. On Android 11 and later, a normal file manager generally cannot write inside Android/data at all — the Bedrock Wiki describes that access as view-only without root or Shizuku. That is why the practical route on a phone is to edit your own copy in ordinary storage and import the packaged file back into Minecraft.
What each field in manifest.json means
Here is the behavior-pack manifest Microsoft ships in its own samples repository, which is about as short as a valid manifest gets:
{
"format_version": 2,
"header": {
"description": "My attack cow behavior pack Add-On!",
"name": "My Behavior Pack",
"uuid": "3958f9a2-96e4-4db0-a907-145d065cd7f0",
"version": [1, 0, 0],
"min_engine_version": [1, 16, 0]
},
"modules": [
{
"description": "My First Add-On!",
"type": "data",
"uuid": "1b85a99a-bfeb-481d-8a77-b5cda182e7d3",
"version": [1, 0, 0]
}
]
}
| Field | What it does |
|---|---|
format_version | Which manifest format the file is written in. Microsoft’s reference lists 1 for skin packs and 2 for resource packs, behavior packs and world templates, and describes 3 as a newer update in preview; the community Bedrock Wiki already treats 3 as current. Unless you need something only 3 offers, leave a working pack on the number it has. |
header.name, header.description | The name and blurb shown in the pack list in game. The name is required; the description is optional. |
header.uuid | The pack’s identity. Required, and unique to this pack. |
header.version | Three numbers, like [1, 0, 0]. Raise it when you re-import an updated pack so the game treats it as an update. |
header.min_engine_version | The oldest Minecraft version that may load the pack. Required for resource and behavior packs. |
modules[].type | What the pack contains: data for a behavior pack, resources for a resource pack. world_template and script also exist. |
modules[].uuid, version | Each module gets its own UUID and its own three-number version. |
dependencies | Other packs this one needs, listed by the other pack’s header UUID and version — or a built-in script module by module_name, such as @minecraft/server. |
metadata | Optional credits: authors, license, url, generated_with, product_type. |
Fields and types from Microsoft’s own manifest.json reference (the PackManifest.md source in MicrosoftDocs/minecraft-creator) and the community Bedrock Wiki, read 14 September 2026. The sample manifest is behavior_pack_sample/manifest.json from microsoft/minecraft-samples. Minecraft changes this format from time to time, so check the reference if a field in your pack isn’t here.
Editing the file on your phone, step by step
- Copy the pack first. Long-press the folder or the
.mcpackin your file manager and duplicate it. A manifest edit is easy to undo when you still have the original. - Extract it if you have a
.mcpackor.mcaddon, somanifest.jsonsits in a real folder rather than inside an archive. - Open
manifest.json. Tap it in the file manager and pick Sonnet under Open with. It opens as a tree:headerandmodulesfold away, and every value sits on its own row. - Change a value. Tap it, type the new one and confirm. A tree editor writes the quotes, commas and brackets for you, so you cannot introduce a syntax error while editing — which is the whole risk of typing JSON on a phone keyboard. The full walkthrough for editing JSON on Android covers adding and deleting fields too.
- Save. If you opened a file from ordinary storage, Save writes your changes back to that same file. “Couldn’t save the file” means the app that handed the file over only allowed reading it; use Share JSON or Copy JSON to get the edited version out, and next time work on a copy you saved yourself.
- Put it back. Zip the pack folder again and rename the archive to
.mcpack, then tap it to import. If you can reach the game’s folders, copying the pack intodevelopment_behavior_packsordevelopment_resource_packsinstead saves you a re-import every time.
When you need new UUIDs
A UUID is a long random identifier in the familiar 8-4-4-4-12 shape, like 3958f9a2-96e4-4db0-a907-145d065cd7f0. Minecraft uses it to tell one pack from another, so the rule is simple: never use the same UUID twice. One manifest needs at least two different ones — the header’s and the module’s — and a pack with several modules needs a fresh one for each.
Generate new UUIDs whenever you start a pack from someone else’s as a template, or copy a manifest from a tutorial. If you leave the original values in, the game sees a pack it already has. Any UUID generator works; the Bedrock Wiki points people at uuidgenerator.net.
One exception: UUIDs listed under dependencies belong to the pack you depend on. Those must stay exactly as they are, or the dependency stops resolving.
Why Minecraft still isn’t showing your pack
- A JSON syntax error. One stray comma invalidates the whole file, and the pack simply doesn’t appear. Sonnet repairs missing and trailing commas and unclosed brackets as a file opens, says so in a message, and leaves the repaired text as the document — nothing touches the disk until you tap Save. Anything else, like a comment or a stray quote, has to be fixed as text: see what an invalid JSON error means.
- A duplicated UUID, usually from a template you forgot to change.
- The wrong module
typefor what the pack actually holds:dataandresourcesare not interchangeable. - A
min_engine_versionabove your installed game. Compare it with the version on the Minecraft title screen. - Pack caching. The Bedrock Wiki recommends keeping work-in-progress packs in
development_behavior_packsanddevelopment_resource_packs, which reload when you leave and re-enter a world, rather than the normal folders where the game may hold on to an older copy. - Nothing obvious at all. Turn on the Content Log under Settings → Creator; it names the file and the problem, which beats guessing.
What you can’t do from a phone
Two honest limits. First, the game’s own com.mojang folders are out of reach on Android 11 and later unless your device is rooted or you use Shizuku, so a phone-only workflow means editing your copy and importing the result. Second, a manifest that still won’t parse after Sonnet’s repair needs a text editor, because Sonnet’s code view is read-only — the Bedrock Wiki’s Android guide suggests Acode for that. Manifests are only a couple of kilobytes, so size is never the problem here; if you also work with much bigger exports, large JSON files on Android covers where phone apps stop. And if the word JSON is new, start with what a JSON file actually is.
Fix your manifest on the phone you play on
Sonnet opens JSON as a collapsible tree, edits values with a tap, and saves valid JSON every time. Offline, no ads, no account. Free on Google Play.