Rabbit coat color calculator
Plan a mating by color, not by raw genotypes: two AaBbCcDd parents give 256 equally likely combinations, with chestnut in 81 of them (31.640625%) and ruby-eyed white in 64 (25%). Nine named colors in all. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Parent1
- AaBbCcDd
- Parent2
- AaBbCcDd
- Cross
- AaBbCcDd x AaBbCcDd
- Color ratio
- 81:64:27:27:27:9:9:9:3
- Offspring count
- 256
Rabbit breeders, 4-H judges, and biology students need more than a generic Punnett square when two parents are mated for coat color. The same black-versus-chocolate, dense-versus-dilute, agouti-versus-self, and full-color-versus-albino alleles that textbooks list as A, B, C, and D combine with independent assortment and C-locus epistasis into a named color, not a raw genotype ratio. This rabbit coat color calculator accepts the four-locus diploid genotype of each parent, enumerates the two hundred fifty-six equally likely Mendelian offspring, and returns the coat-color distribution as percentages. An unrecognized allele is rejected as invalid input instead of being silently ignored.
The four coat-color loci and how a kit is named
A domestic rabbit's visible coat color is not a single gene. Four independently assorting loci — A for agouti versus self, B for black versus chocolate eumelanin, C for full color versus albino, and D for dense versus dilute pigment — jointly decide the named color of a kit. Each parent carries two alleles at every locus and donates exactly one allele per locus to each gamete, so a mating produces two hundred fifty-six equally likely four-locus offspring when every Punnett cell is expanded.
The A locus distinguishes the banded agouti pattern from a solid self: any capital A yields agouti, while aa is self. The B locus decides eumelanin type: B produces black pigment and bb produces chocolate. The D locus controls intensity: D keeps the pigment dense, and dd dilutes black into blue and chocolate into lilac.
The C locus is epistatic: any capital C allows the other three loci to show, but cc removes pigment entirely and the kit is ruby-eyed white (rew) no matter what A, B, and D say. Combining those rules gives nine named colors. Agouti plus black plus dense is chestnut; agouti plus chocolate plus dense is cinnamon; agouti plus black plus dilute is opal; agouti plus chocolate plus dilute is lynx.
Self plus black plus dense is black; self plus chocolate plus dense is chocolate; self plus black plus dilute is blue; self plus chocolate plus dilute is lilac. Homozygous cc is always rew. That mapping is the educational four-locus model used in breeding notebooks and textbooks; it does not add the E, En, or Du series, and it does not invent a tenth color when an allele is missing.
The calculator counts how many of the two hundred fifty-six cells fall in each named color and reports each color's percentage so a planned mating is a color distribution, not a raw genotype list.
Where a rabbit coat color calculator earns its keep
Rabbitries and 4-H projects use a rabbit coat color calculator so a planned doe-by-buck mating is checked for the chance of chestnut, blue, lilac, or ruby-eyed white before a cage is committed. Biology classrooms that have already taught a monohybrid Punnett square need a second tool that names the phenotype the way a breeder does, including the albino epistasis that a single-gene square cannot show.
Rescue groups and pet-store intake forms reduce a pair of written genotypes to a color percentage table without a spreadsheet that reformats Aa as a date. Failed validation does not consume balance. The calculator does not model the E extension series, Vienna markings, Dutch, broken, or wide-band, and it does not estimate herd allele frequencies.
Send two four-locus genotypes and read the colors array as the Mendelian color percentages for that one mating. Keep requests small, pin the rounded percentages in tests, and you get reproducible color odds for a breeding notebook, a lesson, and an edge worker without standing up a genetics suite of your own.
What you can do with it
Rabbitry and 4-H breeding plans
Enter the dam and sire four-locus genotypes before a planned mating and read the chestnut, blue, lilac, and ruby-eyed-white percentages for the litter.
Classroom Mendelian genetics with named colors
Let students submit two parental genotypes and check named coat-color odds, including C-locus albino epistasis that a single-gene Punnett square cannot show.
Exam and LMS auto-grading
Mark rabbit coat-color items with a deterministic oracle that rejects an unrecognized allele and never invents a silent wild-type.
FAQ
How do I predict offspring coat colors from two parent rabbits?
Send parent1 and parent2 as four-locus genotypes such as AaBbCcDd and aaBBCCDD.
What happens if a genotype contains an unrecognized allele?
Recognized alleles are only A, a, B, b, C, c, D, and d. A letter such as X or E is rejected and is not billed.
Which coat colors can the calculator return?
Nine named colors: chestnut, cinnamon, opal, lynx, black, chocolate, blue, lilac, and rew (ruby-eyed white). Homozygous cc is always rew, masking A, B, and D.
Why can two fully colored parents produce a ruby-eyed white kit?
If both parents carry a hidden c, one quarter of the kits are cc. The C locus is epistatic: cc is ruby-eyed white regardless of the alleles at A, B, and D.
What turns black into blue, or chocolate into lilac, in rabbits?
The D locus. A rabbit with dd has diluted pigment, so black becomes blue and chocolate becomes lilac; agouti colors dilute the same way, chestnut to opal and cinnamon to lynx. One capital D keeps the color dense.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/bio/rabbit-color \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"parent1":"AaBBCCDD","parent2":"aaBBCCDD"}'const res = await fetch("https://api.kit.forhosting.com/bio/rabbit-color", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"parent1": "AaBBCCDD",
"parent2": "aaBBCCDD"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/rabbit-color",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"parent1": "AaBBCCDD",
"parent2": "aaBBCCDD"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/rabbit-color", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"parent1":"AaBBCCDD","parent2":"aaBBCCDD"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"parent1":"AaBBCCDD","parent2":"aaBBCCDD"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/rabbit-color", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"parent1": "AaBBCCDD",
"parent2": "aaBBCCDD"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.rabbit_color",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Input contract, recognized alleles, and the color distribution
Each value must be a diploid genotype at the four loci A, B, C, and D — eight recognized letters in all. Compact writing such as AaBbCcDd, spaced pairs such as Aa Bb Cc Dd, and slash pairs such as A/a B/b C/c D/d are accepted and mean the same thing. The recognized alleles are only A, a, B, b, C, c, D, and d. Both kinds of failure are not billed. On success the body echoes the two genotypes normalised with the capital allele first at each locus in A-B-C-D order, restates the cross, and lists every observed coat color with its count out of two hundred fifty-six, its probability, and its percent. POST a JSON body with two required genotype strings, parent1 and parent2. Short aliases work the same way: dam, doe, mother, p1, and genotype1 for the first parent; sire, buck, father, p2, and genotype2 for the second. Any other letter or digit is an unrecognized allele and fails with invalid_input naming the field and the offending character, so Xx, Ee, or a stray 1 never become a silent wild-type. A missing field, an empty string, a genotype that does not contain exactly two alleles at each of the four loci, or a pair that mixes two loci such as AB, is also invalid_input. Colors that did not appear are omitted rather than returned as zero. color_ratio is the same counts reduced by their greatest common divisor. offspring_count is always two hundred fifty-six because four independent two-by-two squares multiply. formula restates the independent-assortment plus C-locus epistasis rule. Pair the JSON with your own pedigree drawing if you need a printable Punnett grid; this endpoint returns the color distribution, not an image, and it never invents an allele that was not in the recognized set. Successful calls use prepaid KIT balance at the published $0.002 base price per item.
Where a rabbit coat color calculator earns its keep
Exam-prep generators and LMS plugins need a deterministic oracle that marks an unrecognized allele as wrong instead of returning an empty success payload a buggy grader might treat as a pass.
Technical questions
What does the rabbit coat color calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.