Audited ·Last updated 29 Jul 2026·4 citations·Tier 2·0 uses

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

Paste plain sequence or FASTA — the header line, line breaks, spaces and line numbering are stripped for you. Case does not matter. A U is accepted and read as a T. NC-IUB ambiguity codes (R Y S W K M B D H V N) are allowed. Up to 50,000 nt.
Which strand did you paste?
mRNA (5′ → 3′)
AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG
The transcript. Identical to the coding strand with every T replaced by U, because RNA polymerase reads the template 3′→5′ and builds a copy of the coding strand.
Coding strand (5′ → 3′)
ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG
Template strand (5′ → 3′)
CTATCGGGCACCCTTTCAGCGGCCCATTACAATGGCCAT
Length
39 nt
GC content
56.4103 %
Ambiguity codes
0 nt

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.

  1. 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.
  2. 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.
  3. 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.
  4. Read the mRNA. It is written 5′→3′ like everything else on the page.
  5. 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.
  6. 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.
  7. 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.
  8. 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.

mRNA₅′→₃′ = codingStrand₅′→₃′ with T → U

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.

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.

sequenceCTATCGGGCACCCTTTCAGCGGCCCATTACAATGGCCAT
input Strandtemplate

Frequently asked questions.

What is the difference between the coding strand and the template strand?
They are the two strands of the same DNA duplex, and they are complementary and antiparallel. The template strand — also called the antisense strand — is the one RNA polymerase physically reads, in the 3′→5′ direction. The coding strand — also called the sense or non-template strand — is the other one, and it is the strand whose sequence the mRNA matches, base for base, with uracil replacing thymine. Databases, papers and plasmid maps almost always show the coding strand, because it can be read straight through as the message. If a sequence you are given starts with ATG and is described as a gene or a coding sequence, it is the coding strand. The naming is genuinely confusing because 'coding' strand is the one that is not used as a template, so both sets of names are shown throughout this page.
Why is it not enough to just replace every T with a U?
Because that only works if you started from the coding strand. Sequences are written 5′→3′ by convention, and the two DNA strands run in opposite directions, so the template strand written 5′→3′ is the reverse complement of the coding strand written 5′→3′ — reversed as well as complemented. Transcribing a template strand therefore requires reverse-complementing it first, and only then swapping T for U. The loaded example makes the size of the error obvious: the template strand CTATCGGG… naively swapped gives CUAUCGGG…, whereas the correct transcript is AUGGCCAUU…. They share almost nothing, and the naive version does not even begin with a start codon. This is why the tool asks which strand you pasted rather than guessing from the sequence, which cannot be done reliably.
Does this give me the mature mRNA a cell would actually make?
No, and the distinction matters if you are working from genomic sequence. What you get is the literal base-for-base transcript of the strand you supplied, which corresponds to a pre-mRNA. A real eukaryotic message is then capped at the 5′ end, spliced to remove introns, cleaved and polyadenylated at the 3′ end, and sometimes edited. This page does none of that: it does not know where your introns are, it does not add a cap or a tail, and it does not identify promoters, transcription start sites or termination signals. If you paste a cDNA or a coding sequence you already have the exon content, so the output is effectively the message; if you paste genomic DNA, treat the output as a pre-mRNA. The string arithmetic here is exact and deterministic, but exactness about a string is not evidence about what any particular cell transcribes.
What are the letters R, Y, S, W, N and the rest?
They are the NC-IUB ambiguity codes, standardised in the 1984 recommendations of the Nomenclature Committee of the International Union of Biochemistry and published simultaneously in six journals in 1985 and 1986. Each stands for a set of possible bases, and the letters are mnemonic: R is puRine (A or G), Y is pYrimidine (C or T), M is aMino (A or C), K is Keto (G or T), S is the Strong three-hydrogen-bond pair (G or C), W is the Weak two-hydrogen-bond pair (A or T). The three-base codes are 'not-X' letters chosen alphabetically: B is not-A, D is not-C, H is not-G, V is not-U. N is aNy base. This calculator accepts all of them and complements them correctly — R becomes Y, M becomes K, H becomes D, B becomes V, while S, W and N are self-complementary. Many quick scripts get the ambiguity complements wrong, which silently corrupts a reverse complement.
Why does S count towards GC content but N does not?
Because S is unambiguous about the thing GC content measures. S means 'G or C' — either way it is a strong three-hydrogen-bond base pair, so it contributes to the GC count with certainty. N means any base, so it contributes nothing certain; counting it would be inventing information, and excluding it makes the reported percentage an honest lower bound on the true GC content. The same reasoning excludes the partially ambiguous codes R, Y, K, M, B, D, H and V, each of which is compatible with both GC and AT positions. The tool reports the ambiguity count as a separate output precisely so you can see how much of the sequence the GC figure is uncertain about. For a fully determined sequence the ambiguity count is zero and the percentage is exact.
Can I paste FASTA, or lower case, or an RNA sequence?
Yes to all three. A leading FASTA header line beginning with '>' is removed, as are line breaks, spaces, and the digits that appear in numbered sequence listings — so you can paste straight out of a GenBank-style display without cleaning it up first. Lower case is upper-cased. A U in the input is read as a T, so you can paste an RNA sequence and use it as though it were the coding strand, which is a common shortcut when you already have a message and want the DNA back. What is not accepted is any other character: a stray letter or symbol raises an error naming it rather than being silently dropped, because silently dropping one base would shift every codon downstream of it and produce a plausible-looking wrong answer. Sequences over 50,000 nucleotides are also refused — that is a job for a proper sequence-analysis package, not a text box.

References& sources.

  1. [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. [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. [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. [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
Coming soon