You are here

Punnett Square Calculator

A Punnett Square shows the genotype*s two individuals can produce when crossed. To draw a square, write all possible allele* combinations one parent can contribute to its gametes across the top of a box and all possible allele combinations from the other parent down the left side. The allele combinations along the top and sides become labels for rows and columns within the square. Complete the genotypes in the square by filling it in with the alleles from each parent. Since all allele combinations are equally likely to occur, a Punnett Square predicts the probability of a cross producing each genotype.

Number of traits in cross:

Edit Alleles:
Parent 1:

Trait 1
Trait 2
Trait 3
Trait 4
Trait 5

Parent 2:


A single trait Punnett Square tracks two alleles for each parent. The square has two rows and two columns. Adding more traits increases the size of the Punnett Square. Assuming that all traits exhibit independent assortment, the number of allele combinations an individual can produce is two raised to the power of the number of traits. For two traits, an individual can produce 4 allele combinations (2^2). Three traits produce 8 combinations (2^3). Independent assortment typically means the genes are on different chromosomes. If the genes for the two traits are on the same chromosome, alleles for each trait will always appear in the same combinations (ignoring recombination).

With one row or column for each allele combination, the total number of boxes in a Punnett Square equals the number of rows times the number of columns. Multi-trait Punnett Squares are large. A three trait square has 64 boxes. A four trait square has 256 boxes.

The genotype in each box is equally likely to be produced from a cross. A two-trait Punnett Square has 16 boxes. The probability of a cross producing a genotype in any box is 1 in 16. If the same genotype is present in two boxes, its probability of occurring doubles to 1/8 (1/16 + 1/16).

If one of the parents is a homozygote for one or more traits, the Punnett Square still contains the same number of boxes, but the total number of unique allele combinations is 2 raised to the power of the number of traits for which the parent is heterozygous.

A commonly discussed Punnett Square is the dihybrid cross. A dihybrid cross tracks two traits. Both parents are heterozygous, and one allele for each trait exhibits complete dominance*. This means that both parents have recessive alleles, but exhibit the dominant phenotype. The phenotype ratio predicted for dihybrid cross is 9:3:3:1. Of the sixteen possible allele combinations:

  • Nine combinations produce offspring with both dominant phenotypes.
  • Three combinations each produce offspring with one dominant and one recessive phenotype.
  • One combination produces a double recessive offspring.
  • This pattern only occurs when both traits have a dominant allele. With no dominant alleles, more phenotypes are possible, and the phenotype probabilities match the genotype probabilities.

    A simpler pattern arises when one of the parents is homozygous for all traits. In this case, the alleles contributed by the heterozygous parent drives all of the variability. A two trait cross between a heterozygous and a homozygous individual generates four phenotypes, each of which are equally likely to occur.

    More complicated patterns can be examined. In an extreme case when more than two alleles exists for each trait and the parents do not possess same alleles, the total number of genotypes equals the number of boxes in the Punnett Square.

    It is possible to generate Punnett squares for more that two traits, but they are difficult to draw and interpret. A Punnett Square for a tetrahybrid cross contains 256 boxes with 16 phenotypes and 81 genotypes. A third allele for any one of the traits increases the number of genotypes from 81 to 108.

    Given this complexity, Punnett Squares are not the best method for calculating genotype and phenotype ratios for crosses involving more than one trait.

    Test your understanding with the Punnett Square Calculator Problem Set.

    Video Overview

    Related Content


Love how you can do many traits! Captures what it aims to do really good.

...and it runs on linux!!!

windows, mac, android and iOS.  

I even tried it on my daughter's DSi, but the DSi ran out of memory before the page loaded completely.

For those who are interested Here's you can download punnett square calculator :

Punnett Square Calculator

looks like a robust resource for Windows users. How much work would it be to port something like that to android or iOS?

Yes, it will be a little difficult  ported it to Android and iOs. But Bifido is professional tool - not just simple calculator. Can this calculator do, what Bifido can? And by the way, Bifido is Qt application - so it can be easily ported to Mac or Linux.

In the last seconds of the video the narrator says:

“Given this complexity, Punnett Squares are not the best method for calculating genotype* and phenotype* ratios for crosses involving more than one trait.”

Okay, what is the best method?

Because of the sheer number of allele* combinations possible when tracking multiple, independently assorting traits, we usually don't calculate the probability for all genotype*s.  It is more common to focus on a small set of possible genotypes. For example, you might be asked to calculate the probability that a specific paring will result in offspring containing one or more recessive traits. In this case, we can ignore all but a few genotypes and avoid generating a huge Punnett Square.

Instead, we calculate the probability for each trait individually using single trait Punnett Squares. Then, given independent assortment, we can multiply the individual probabilities together to find the probability of producing specific multi-trait combinations.

Consider a tryhibrid cross AaBbCb x AaBbCc. If we want to know the probability of producing a triple heterozygous offspring (AaBbCc). We first treat each trait separately and determine that there is a 50% (0.5) chance that an offspring will be heterozygous for each of the traits A, B and C.

The probability that an offspring will be heterozygous for all three traits is the product of the individual probabilities: 0.5 x 0.5 x 0.5 = 0.125. There is a 12.5% chance that the mating will produce a triple heterozygous offspring.

Once we know all of the single trait probabilities, it is easy to calculate additional multi-trait probabilities. The probability of the cross above (AaBbCc x AaBbCc) producing AAbbCc is:

(0.25 for AA) times (0.25 for bb) times (0.5 for Cc) = 0.25 x 0.25 x 0.5 =  0.03125 or 3.125%

The key thing to grasp is that independent assortment allows us to multiply individual trait probabilities to find multi-trait probabilities.

If for some reason you want to calculate the probability for every genotype in a multi-trait cross, it is still better to calculate them by multiplying the single trait probabilities. Because, it is easy to make mistakes when drawing large Punnett Squares. 

There is a third technique involving drawing branching diagrams, but I don't use it.

Either I am reading this wrong, or there is an error in the program when you take it up to 5x5.

Reading across the top row there when you do a cross of  AaBbCcDdEe × AaBbCcDdEe I am only seeing 30 uinque entries across the top.  It appears that ABcDe and aBcDe are missing and replaced by duplications of other combinations.

You were right, there was a typo in an aray.  What did I say about it being easy to make mistakes drawing such large squares?

Your point is driven home.

I'm trying to do my homework and I don't have the time to do the punnett squares.

The Punnett Square display for Phenotype* Ratio/% is incorrect if we are showing Mendelian (Dominant/Recessive) genetics*.  For example:  Aa x Aa cross would produce a Genotype* of 25% AA : 50% Aa : 25% aa,  but the Phenotype would be 75% "A"(AA+Aa) : 25% "a" (aa).

@Gmager: Thanks for the feedback. I am unable to reproduce your error. If I set the number of traits to 1, have two heterozygous (Aa) parents, make either allele* (A or a) the dominant allele and show Phenotype* percent or ratio, I get two distinct phenotypes with the appropriate frequencies.

If the radio button for dominant allele is left at the default setting of "None", the calculator assumes that Aa produces an intermediate phenotype. Under these conditions the phenotype probability matches the genotype* probability (25:50:25)


Would you consider sharing the code, or at least the algorithm, you use in calculating the results of the crosses? I'm trying to come up with something similar in R; but, rather than produce a Punnett Square, it will feed the numerical results of extremely large numbers of loci into calculations following up on Fisher's (1918) polygenic model. I'm trying to avoid a brute force solution, but I'm embarassed I haven't found a simple algorithm yet!

Thanks in advance, and really nice work on this page!

Your video go's way to fast. I don't know what kind of audience it's directed at, but I've done punnett squares before and I can't follow anything you said. It's explaining how to do a math equation in four minutes.

John, thanks for the input. There is quite a bit of information packed into the video. As the title states, it is an overview. If you want to gain a good understanding of the concepts covered, read over the material on this page, spend some time with the calculator and take a look at the links under "related content".

This is an excellent thing I didn't (unfortunately) know existed in my high school biology course! I use it all the time now for my college biology homework! :)

Hi, I was told you cannot write phenotype*s in "GG" Gg" format.  Why are you expressing them this way?  I was told my ratios were completely wrong since my tutor told me to check my work here.  Now, I am told there is no way a phenotype is EVER expressed like that for a ratio. It was by a professor with their doctorate. Could you advise what you mean by your answers?  I got 25% of my grade wrong because I used the phentype ratio you suggest.   Thank you. I don't mind to mean unappreciative.

Thank you for the comment. I am sorry you had trouble with your exam. Your professors rationale is that a genotype is the alleles present at the loci of interest and the phenotype is the physical expression of that genotype. By this reasoning, the labels for phenotype ratios should always be the description of the characteristic, rather than the allele patterns. 
Since this calculator does not ask you to enter the traits for each gene locus, it is unable to label the ratios with the trait descriptions. Give this limitation, it uses allele patterns (each drawn in a distinct color) as proxies for the different phenotypes.
The phenotype ratios provided by the calculator are correct. But the phenotypes are labeled with allele patterns because the calculator does not know what trait is expressed by AA, gG or whatever other allele abbreviation you enter.  
I could rewrite the calculator to show colored blocks instead of alleles. Unfortunately, I fear this would be trading one type of confusion for another because some of the colors would be difficult to tell apart, especially in the larger tables. 

I see exactly what you are saying. Thank you for your kind comment. The problem lies in my not knowing how to express the phenotype* and not in your program.  Thank you again.

The easiest thing to do is to scale the square to the size you want and take a screen shot.

There is no easy alternative because the square is not rendered as an image. It is a set of text boxes arranged in rows and columns. If you know anything about html, each box is a div elelment with a colored background.

If you are comfortable going into the source, you can grab the content of the div with the id "squarePositionDiv" and paste it into another html file. 

Thanks for this! i'm from south america and with this make my biology homework more  easier... Sorry for my bad english! :) Graciasss! 

need a picture of squaresi

would love codominance and/or incomplete

Codominance and/or incomplete dominance* patterns can be shown with the calculator by setting the dominant allele* to 'none' for the incomplete and co-dominant traits.

Isnt there supposed to be a diffrence between genotype*s and phenotype*s with linked genes? just sayin


I dont understand what it does though!

You can see all of the genotype* or phenotype* frequencies by clicking the "show frequencies" button at the top

Knowing how much Linux is used in the science industry, it make me happy when websites provide interactive content that isn't platform dependant.

I try to be as platform neutral as possible. Of course, most of the site will not work with IE8... :-)

is there a blood type punnet square calculator anywhere?

This calculator will give you the genotype*s for blood type crosses, but it can not deal with the codominance of the A and B allele*s. So, you'll have to calculate some of the phenotype* probablities on your own. 

For example:

  1. set the number of traits to cross to 1
  2. give parent 1 the alleles A and O
  3. give parent 2 the alleles A  and B

you get 4 genotypes:

AA, OA AB and OB. With AB codominance the pheotypes will be A, AB and B

Frequencies will be 

A = AA + AO = 25% + 25% = 50%

B = OB = 25%

AB = AB = 25%

To make this work you need to remember that the genotypes AA and AO give the same phenotype as do BB and BO.

I have been trying to make a punnet squarre as slisted below.  Did it myself and was told it was wrong!  Used this calculater ans was told it was wrong.  Can anyone help!

Use a punnett square to figure out the results and type in the phenotype* ratios including the types (tall green or what ever is correct) for the following crosses,  a cross between the following parents TTyy  x TtYy

Add new comment