A parameter is a suffix, not a command: it sits at the end of the prompt and changes how one job renders. The official Parameter List enumerates them as an index rather than a manual — thirty entries, one sentence each, the spelling of the flag, and no value column anywhere.

The ranges live on the individual pages, and several are narrower than the cheat sheets suggest. Everything below comes from the Parameter List and four of those pages.

What the official parameter list actually contains

Two questions are answered here. What a parameter is: “Parameters are like special instructions you can use to guide how your images turn out.” Where it goes: “Parameters always go at the end of your text prompt.” A third — which values are legal — is delegated, one link per entry.

The three format rules, and the four lines that break them

The three rules decide whether a parameter binds at all: put it at the end, keep the space before the dashes, use no punctuation inside one. The counterexamples underneath raise no error — the flag simply stops applying.

vibrant California poppies--ar 2:3
vibrant California poppies - - ar 2:3
vibrant California poppies --ar 2:3,
vibrant California --ar 2:3 poppies

A missing space, split dashes, a trailing comma, prompt text after the parameters. The prompt guide covers the text half.

All thirty entries, transcribed

This is the Full Parameter List in the order the page prints it.

EntryWhat the official list says
--aspect / --arImages start as squares
--chaos / --cSpice up your results
--orefLikeness or object form; replaced by the Edit Model
--noWhat you don’t want
--profile / --pProfiles and moodboards
--quality / --qDetail and processing time
--repeat / --rSeveral image sets per prompt
--seedTesting and experimenting
--stealthCreations private
--rawMore control
--stylize / --sArtistic flair
--srefMatch another image’s look
--tileSeamless repeating patterns
--version / --vSwitch model versions
--draftDraft images in V7, half the GPU cost
--weird / --wQuirky, unconventional images
--fastGPU speed: Fast
--iwImpact of image prompts
--relaxGPU speed: Relax
--turboGPU speed: Turbo
--nijiAnime and Eastern aesthetics
--publicCreations public
--motion low / highMotion settings for video
--loop / --endLooping video, custom end frame
--bsVideos per prompt
--swStyle Reference strength
--svStyle reference version
--videoVideos in Discord
--hd / --sd2048px and 1024px
--editInstructions plus up to four references

Four entries are video-only, so a still-image job draws on twenty-six. A flag that is not in this column is not on the list; the Discord command list covers the other half.

The values the documentation publishes

A diagram stacking the main Midjourney parameters as labelled rows, running from aspect ratio and stylize down through chaos, weird, seed, quality and image weight

Six of the thirty carry a number in the docs: two defaults, four ranges, twenty-four with neither.

ParameterPublished value
--arDefault 1:1; no decimals, so 139:100, not 1.39:1
--stylize / --s0 to 1000, default 100
--chaos / --c0 to 100, default 0
--weird / --wUp to 3000, default 0; V5 and later
--seedA whole number from 0 to 4294967295
--hd / --sd2048px and 1024px

The aspect ratio page adds the arithmetic the parameter will not do: 1920x1080 becomes --ar 16:9.

The names with two spellings

Eight entries accept a long and a short spelling, both legal in one job: --ar, --c, --p, --q, --r, --s, --v, --w. Everything else is single-spelled, --seed and --sref included. A line that clears the three rules:

street market at dawn, one vendor arranging fruit, muted palette --ar 16:9 --s 100 --c 0 --seed 12345

Combinations the official pages rule out

Four pairs are not independent, and each is stated on one page rather than in a matrix. --tile is not compatible with the Edit Model: the parameter stays listed, the combination does not. Edit results cannot be remixed. Turbo and --seed do not mix, because seed locking is unreliable at speed. --weird is not fully compatible with seeds.

The Discord form of the last entry takes image URLs, which must already be online.

make the jacket red --edit https://your-public-host.example/portrait.png

Two offline checks for a parameter set

Neither script calls Midjourney — there is no public API — and neither invents a range. The first encodes the thirty names, the eight aliases and the published ranges, so anything without a number comes back RANGE_NOT_PUBLISHED.

"""Check a parameter name and value against the published documentation only."""

# The long forms the official list prints alongside a short one.
ALIASES = {
    "--aspect": "--ar", "--chaos": "--c", "--profile": "--p",
    "--quality": "--q", "--repeat": "--r", "--stylize": "--s",
    "--version": "--v", "--weird": "--w",
}

# Every flag the Full Parameter List prints, in the order its entries appear.
OFFICIAL = [
    "--ar", "--c", "--oref", "--no", "--p", "--q", "--r", "--seed",
    "--stealth", "--raw", "--s", "--sref", "--tile", "--v", "--draft",
    "--w", "--fast", "--iw", "--relax", "--turbo", "--niji", "--public",
    "--motion", "--loop", "--end", "--bs", "--sw", "--sv", "--video",
    "--hd", "--sd", "--edit",
]

# Ranges quoted from single-parameter pages. Nothing else is guessed.
INTEGER_RANGES = {"--s": (0, 1000), "--c": (0, 100), "--w": (0, 3000)}
SEED_RANGE = (0, 4294967295)

# Entries the list writes as a bare flag, with no value after them.
FLAGS = {"--hd", "--sd", "--tile", "--raw", "--fast", "--relax", "--turbo",
         "--stealth", "--public", "--draft"}


def check_integer(name, raw, low, high):
    try:
        value = int(raw)
    except ValueError:
        return "rejected", f"{raw} is not a whole number"
    if low <= value <= high:
        return "accepted", f"inside the published range {low}-{high}"
    return "rejected", f"outside the published range {low}-{high}"


def check_ratio(raw):
    parts = raw.split(":")
    if len(parts) != 2 or not all(part.isdigit() for part in parts):
        return "rejected", "use two whole numbers, as in 16:9"
    return "accepted", "no decimals in an aspect ratio"


def check(name, value=None):
    """Return (verdict, detail) for one parameter. Never guesses a range."""
    name = ALIASES.get(name, name)
    if name not in OFFICIAL:
        return "rejected", "not on the official parameter list"
    if value is None:
        if name in FLAGS:
            return "accepted", "flag, no value"
        return "rejected", "this entry needs a value"
    if name in FLAGS:
        return "rejected", "this entry is written without a value"
    if name == "--seed":
        return check_integer(name, value, *SEED_RANGE)
    if name in INTEGER_RANGES:
        return check_integer(name, value, *INTEGER_RANGES[name])
    if name == "--ar":
        return check_ratio(value)
    return "unchecked", "RANGE_NOT_PUBLISHED"


if __name__ == "__main__":
    for flag, val in (("--ar", "16:9"), ("--ar", "1.39:1"), ("--s", "100"),
                      ("--s", "1200"), ("--c", "0"), ("--w", "3000"),
                      ("--seed", "12345"), ("--seed", "4300000000"),
                      ("--hd", None), ("--quality", "1"),
                      ("--stylize", "250")):
        verdict, detail = check(flag, val)
        print(f"{flag:>12} {str(val):>10}  {verdict:<9} {detail}")

--stylize 250 passes through the alias table; --quality 1 comes back unchecked, because no cited page publishes what --quality accepts. The second script audits a whole job: it canonicalises names, reorders them the way the list prints them, and reports the documented clashes.

"""Audit a parameter set for the combinations the docs rule out."""

from itertools import combinations

ORDER = ["--ar", "--c", "--oref", "--no", "--p", "--q", "--r", "--seed",
         "--stealth", "--raw", "--s", "--sref", "--tile", "--v", "--draft",
         "--w", "--fast", "--iw", "--relax", "--turbo", "--niji", "--public",
         "--motion", "--loop", "--end", "--bs", "--sw", "--sv", "--video",
         "--hd", "--sd", "--edit"]

ALIASES = {"--aspect": "--ar", "--chaos": "--c", "--profile": "--p",
           "--quality": "--q", "--repeat": "--r", "--stylize": "--s",
           "--version": "--v", "--weird": "--w"}

# Each pair is stated on one page; no page collects them.
CLASHES = {
    frozenset({"--tile", "--edit"}):
        "the Edit model is not compatible with --tile",
    frozenset({"--turbo", "--seed"}):
        "seed locking is not reliable in Turbo mode",
    frozenset({"--w", "--seed"}):
        "weird is not fully compatible with seeds",
}


def audit(job):
    """job: {"--s": "250", ...} -> (ordered flags, clash messages, off-list)."""
    canonical = {ALIASES.get(key, key): value for key, value in job.items()}
    ordered = [flag for flag in ORDER if flag in canonical]
    clashes = [
        CLASHES[frozenset(pair)]
        for pair in combinations(ordered, 2)
        if frozenset(pair) in CLASHES
    ]
    if "--edit" in canonical:
        clashes.append("an edit result cannot be remixed afterwards")
    return ordered, clashes, sorted(set(canonical) - set(ORDER))


for job in ({"--stylize": "250", "--seed": "12345", "--v": "8.2"},
            {"--edit": "url", "--tile": None, "--turbo": None, "--seed": "7"}):
    ordered, clashes, off_list = audit(job)
    print("order:", " ".join(ordered))
    print("flags:", "; ".join(clashes) or "none documented")
    print("off-list:", ", ".join(off_list) or "none")
    print("---")

Two things are absent on purpose: the scripts never touch the text half of a prompt, and they never claim a range for entries the pages leave unquantified — the discipline the style reference guide applies to --sw.

What the parameter list does not publish

  • Defaults: the index has no value column.
  • Version availability: no row says whether a parameter works in V8.2, the default.
  • A conflict matrix: the four clashes came from four pages.
  • Value syntax for --no, --tile, --fast, --relax and --turbo: described, not specified.
  • Limits: parameters per prompt, maximum length, error text.
  • --stop, --cref, --cw, --exp, :: weights, --style raw: none is one of the thirty, and the page hands them to a legacy article.

A cached copy of this page renders the Omni Reference entry as “replaces Character Reference in V7”; the live page reads “replaced by the Edit Model in V8.X”. The parameter did not change; its successor did.

Frequently asked questions

How many parameters are there? Thirty. Four are video-only, so a still-image job draws on twenty-six.

Does --ar accept any ratio? 1:1 is the default, five common values are listed, decimals are forbidden, and extreme ratios are experimental with no published ceiling.

What is a safe value for --chaos? Only what the Chaos page states: 0 to 100, default 0, high values drifting from the prompt. No starting point is recommended.

Where does --edit live now? It is the thirtieth entry, replacing Omni Reference in V8.X. The edit model walkthrough covers the four entry points.