Sonnet

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]
    }
  ]
}
FieldWhat it does
format_versionWhich 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.descriptionThe name and blurb shown in the pack list in game. The name is required; the description is optional.
header.uuidThe pack’s identity. Required, and unique to this pack.
header.versionThree 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_versionThe oldest Minecraft version that may load the pack. Required for resource and behavior packs.
modules[].typeWhat the pack contains: data for a behavior pack, resources for a resource pack. world_template and script also exist.
modules[].uuid, versionEach module gets its own UUID and its own three-number version.
dependenciesOther 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.
metadataOptional 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

  1. Copy the pack first. Long-press the folder or the .mcpack in your file manager and duplicate it. A manifest edit is easy to undo when you still have the original.
  2. Extract it if you have a .mcpack or .mcaddon, so manifest.json sits in a real folder rather than inside an archive.
  3. Open manifest.json. Tap it in the file manager and pick Sonnet under Open with. It opens as a tree: header and modules fold away, and every value sits on its own row.
  4. 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.
  5. 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.
  6. 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 into development_behavior_packs or development_resource_packs instead 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

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.

Get it on Google Play