DNA to mRNA Converter — Coding and Template Strands
Transcribe DNA to mRNA the right way round. Choose coding or template strand, get the transcript, both DNA strands, length and GC content, all written 5' to 3'.
DNA to mRNA Converter
Background.
This DNA to mRNA converter transcribes a sequence and, crucially, asks you which strand you pasted before it does. That question is the whole point of the tool. Every sequence here — input and output — is written 5′ to 3′, which is the universal convention, and under that convention transcription is only a find-and-replace if you started from the coding strand. Start from the template strand and the correct mRNA is the reverse complement with T swapped for U, which is a completely different string.
Here is the concrete demonstration, using the example loaded into the widget. The coding strand ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG transcribes to AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG. Its template strand, written 5′→3′ as convention requires, is CTATCGGGCACCCTTTCAGCGGCCCATTACAATGGCCAT. If you paste that template strand into a tool that only swaps T for U, you get CUAUCGGGCACCCUUUCAGCGGCCCAUUACAAUGGCCAU — which is not the mRNA, is not even close, and would translate into nonsense. Select 'template' here and you get the correct AUGGCCAUU… back, because the calculator reverse-complements first.
The biology behind that is straightforward once stated. DNA strands are antiparallel: where one runs 5′→3′, its partner runs 3′→5′. RNA polymerase can only build a chain in the 5′→3′ direction, so it must read its template in the 3′→5′ direction. The product therefore comes out matching the *other* strand — the coding, sense or non-template strand — with uracil in place of thymine. That is why databases and papers almost always quote the coding strand: it reads the same way as the message.
Alongside the transcript you get both DNA strands, the length, the GC content and a count of any ambiguity codes. The tool accepts the full NC-IUB symbol set from the 1984 recommendations — R for purine, Y for pyrimidine, S for the strong G-or-C pair, W for the weak A-or-T pair, K, M, B, D, H, V and N — and complements them correctly, which many quick scripts do not. It also strips FASTA headers, line breaks and line numbering, accepts lower case, and reads a U in a DNA input as a T.
What this page deliberately does not do is model gene expression. It performs the literal base-for-base transcription of the strand you give it. It does not splice introns out, so a genomic sequence gives you a pre-mRNA rather than a mature message; it does not add a 5′ cap or a poly-A tail; it does not find promoters, transcription start sites or termination signals; and it certainly does not tell you whether a sequence is transcribed at all in any real cell. The arithmetic is exact and deterministic — it is string manipulation with a strict rule — but exactness about the string is not evidence about the biology, and the two should not be confused. If you want the peptide rather than the message, use the codon translation calculator linked below, which starts from a sequence and applies a selectable NCBI genetic code table with reading frames.
What is dna to mrna converter?
Transcription is the copying of one DNA strand into a complementary RNA strand. The two DNA strands of a duplex are antiparallel and complementary: adenine pairs with thymine, guanine with cytosine, as Watson and Crick set out in 1953. RNA polymerase binds the duplex, separates the strands locally, and synthesises RNA in the 5′→3′ direction using one strand as a template, which it must therefore read 3′→5′.
The strand being read is called the template strand, or equivalently the antisense strand. The other one — the strand the new RNA ends up matching — is the coding strand, also called the sense strand or the non-template strand. The RNA product is identical in sequence to the coding strand except that uracil replaces thymine. This is why a gene sequence in GenBank is normally shown as the coding strand: it can be read straight through as the message, codon by codon.
The two names for each strand are a common source of confusion, and different textbooks favour different pairs, so both are shown throughout this page. What matters computationally is the 5′→3′ convention. Written 5′→3′, the template strand is the reverse complement of the coding strand — not simply its complement — because reversing the reading direction is part of what 'antiparallel' means. Getting that wrong is the single most common error in hand-transcribing a sequence, and it is why this tool asks which strand you have rather than guessing.
How to use this calculator.
- Paste your DNA sequence into the box. Plain sequence or FASTA both work — the header line, line breaks, spaces and any line numbering are removed for you, and case does not matter.
- Choose the strand. If you copied the sequence from a gene record, a plasmid map or a paper, it is almost certainly the coding (sense) strand — leave the selector where it is.
- Choose 'template' only if you know you have the antisense strand, for example because you wrote out the complement by hand or you are working from a probe design.
- Read the mRNA. It is written 5′→3′ like everything else on the page.
- Check the two DNA strands underneath. If the coding strand shown is not what you expected, you picked the wrong option in step two — swap it and look again.
- Use the length and GC content as a sanity check on your paste. A length that is not what you expected usually means a stray character or a truncated copy.
- If the ambiguity count is above zero, your sequence contains NC-IUB codes such as N or R. They are complemented correctly, but only G, C and S count towards GC content, so the percentage is a lower bound.
- Remember what the output is not: a pre-mRNA, not a spliced message; no cap, no tail; and no claim that this sequence is transcribed in any particular cell.
The formula.
Two rules generate everything on this page.
Rule one is complementarity: A pairs with T, G pairs with C. Extended to the NC-IUB ambiguity alphabet, the complement map is R↔Y (purine and pyrimidine swap), M↔K (amino and keto swap), H↔D and B↔V (the three-base 'not-X' codes swap in the same way), while S, W and N are self-complementary — S means G-or-C and its complement is C-or-G, which is still S.
Rule two is antiparallelism: the two strands run in opposite directions. Because sequences are conventionally written 5′→3′, converting between strands requires reversing the order as well as complementing each base. The template strand written 5′→3′ is therefore the reverse complement of the coding strand written 5′→3′.
Transcription itself then adds nothing but a base substitution. RNA polymerase reads the template 3′→5′ and synthesises 5′→3′, so the product is the reverse complement of the template — which is exactly the coding strand — with uracil in place of thymine. In symbols: mRNA = codingStrand with T→U, and codingStrand = reverseComplement(templateStrand).
Work through the loaded example. The coding strand ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG is 39 nucleotides. Reverse it and complement each base and you get CTATCGGGCACCCTTTCAGCGGCCCATTACAATGGCCAT, which is the template strand — reverse-complement that a second time and the original comes back, because reverse-complement is its own inverse. Replace every T in the coding strand with U and you have the transcript AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG. Counting G and C over the coding strand gives 22 out of 39, so the GC content is 100 × 22 ÷ 39 = 56.41 percent. Because every G on one strand faces a C on the other, the template strand has exactly the same GC content — a useful arithmetic check that the reverse complement was done correctly.
Rounding: GC content is an exact rational, a count divided by a count. It is formed in arbitrary-precision decimal arithmetic and rounded once, at the end, to ten decimal places; nothing is rounded before that. Report it to one decimal place. The length and the ambiguity count are exact integers and are not rounded at all, and the sequence outputs are strings, so no rounding applies to them.
Invalid input is refused rather than guessed at. An empty box, or a FASTA header with nothing under it, raises a field error. Any character outside the NC-IUB nucleotide alphabet raises an error naming the offending character, rather than being silently dropped — silently dropping a character would shift every downstream codon. Sequences longer than 50,000 nucleotides are refused, because a browser text field is not a sequence-analysis pipeline.
A worked example.
Suppose a problem set hands you the template strand CTATCGGGCACCCTTTCAGCGGCCCATTACAATGGCCAT, written 5′→3′, and asks for the mRNA. Paste it in and set the strand selector to 'template'. The calculator reverse-complements it — taking the last base first and complementing each — to recover the coding strand ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG, then substitutes U for T to give the transcript AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG. The length is 39 nucleotides and the GC content is 56.41 percent, from 22 G-or-C positions out of 39; there are no ambiguity codes. Notice what would have happened if you had simply swapped T for U on the strand you were given: you would have written CUAUCGGGCACCCUUUCAGCGGCCCAUUACAAUGGCCAU, a completely different message that begins with a leucine codon instead of the start codon AUG and contains none of the same reading frame. That is the error this page exists to prevent. As a check, look at the recovered coding strand: it opens with ATG and closes with TAG, a clean 13-codon open reading frame from start codon to stop codon, which is exactly what you would expect a well-posed exercise to hand you and a strong signal that the strand assignment was right.
Frequently asked questions.
What is the difference between the coding strand and the template strand?
Why is it not enough to just replace every T with a U?
Does this give me the mature mRNA a cell would actually make?
What are the letters R, Y, S, W, N and the rest?
Why does S count towards GC content but N does not?
Can I paste FASTA, or lower case, or an RNA sequence?
References& sources.
- [1]NC-IUB — Nomenclature Committee of the International Union of Biochemistry (1985). 'Nomenclature for incompletely specified bases in nucleic acid sequences: recommendations 1984.' Published simultaneously in European Journal of Biochemistry 150: 1–5; Nucleic Acids Research 13: 3021–3030; Biochemical Journal 229: 281–286; Journal of Biological Chemistry 261: 13–17 (1986); Proceedings of the National Academy of Sciences USA 83: 4–8 (1986); Molecular Biology and Evolution 3: 99–108 (1986). Read on the official IUBMB nomenclature site, which reproduces Table 1 (the fifteen symbols and the mnemonic origin of each — R = puRine, Y = pYrimidine, M = aMino, K = Keto, S = strong three-hydrogen-bond, W = weak two-hydrogen-bond, B/D/H/V as not-A/not-C/not-G/not-U, N = aNy) together with the complementary-strand table this calculator implements. Retrieved 2026-07-29.
- [2]NCBI, 'The Genetic Codes' (compiled by Elzanowski, A. & Ostell, J.), NCBI Taxonomy resource; table set last updated 23 September 2024. Consulted as an independent second authority on the base-symbol and strand conventions used by the sequence database the world's sequences actually live in — GenBank records the coding strand and infers the transcript from it, the same convention implemented here. Agrees with the NC-IUB nomenclature above; no discrepancy found. Retrieved 2026-07-29.
- [3]Watson, J. D. & Crick, F. H. C. (1953). 'Molecular Structure of Nucleic Acids: A Structure for Deoxyribose Nucleic Acid.' Nature 171: 737–738. doi:10.1038/171737a0. The origin of the A–T and G–C pairing rules and of the antiparallel double-helix geometry that together make 'reverse complement' the correct strand conversion rather than plain complement. Listed bibliographically.
- [4]Crick, F. H. C. (1970). 'Central Dogma of Molecular Biology.' Nature 227: 561–563. doi:10.1038/227561a0. Crick's own restatement of the DNA → RNA → protein direction of sequence information transfer, including a careful account of what the dogma does and does not assert — relevant here because this page performs only the first arrow and makes no claim about expression. Listed bibliographically.
In this category
Embed
Quanta Pro
Paid features are coming later.
- All 682 calculators remain free
- No billing is enabled