Skip to main content
L
Loopaloo
Buy Us a Coffee
All ToolsImage ProcessingAudio ProcessingVideo ProcessingDocument & TextPDF ToolsCSV & Data AnalysisConverters & EncodersWeb ToolsMath & ScienceGames
Guides & BlogAboutContact
Buy Us a Coffee
L
Loopaloo

Free online tools for developers, designers, and content creators. Your files are processed in your browser and are never uploaded - no accounts required. A few network utilities (like What's My IP and Currency Converter) call public APIs to do their job and say so on their pages.

support@loopaloo.com

Tool Categories

  • Image Tools
  • Audio Tools
  • Video Tools
  • Document & Text
  • PDF Tools
  • CSV & Data
  • Converters
  • Web Tools
  • Math & Science
  • Games

Company

  • About Us
  • Contact
  • Blog
  • FAQ

Legal

  • Privacy Policy
  • Terms of Service
  • Disclaimer

Support

Buy Us a Coffee

© 2026 Loopaloo. All rights reserved. Built with privacy in mind.

Privacy|Terms|Disclaimer
  1. Home
  2. Math & Science
  3. Truth Table Generator
Add to favorites

Truth Table Generator

Truth tables with the reading printed, so A implies B implies C shows its brackets. Refuses a chain of NAND or NOR rather than guessing, and reads a name like nota as one variable.

Calculated locally in your browserMore math & scienceJump to full guide

Initializing in your browser…

You might also like

Image Color Palette Extractor

Extract a palette whose every colour is one the image actually contains, with the share of the picture each one covers. Median cut, k-means in CIE Lab or plain frequency, each named.

Online Audio Recorder

Record from a microphone with the browser's call processing off by default, a level meter in real dBFS with a clipping indicator, and a length taken from the audio rather than the clock.

Aspect Ratio Calculator

Aspect ratios reduced exactly by the greatest common divisor, with the reduction multiplied back as a check, resizes that say whether they are exact, and named ratios that carry a note where the name is not the ratio.

A worked calculation

You type A -> B -> C. Which grouping did the tool compute, and how would you know?

Expression

A -> B -> C
What Truth Table Generator produces

Read as

A → (B → C)      true in 7 of 8 rows
(A → B) → C      true in 5 of 8 rows

Implication is right associative, so A → B → C means A → (B → C). The other grouping is a genuinely different function, and the previous version of this tool computed it: its parser used a while loop, which is left associative, and it printed the header as "A → B → C" with no brackets, so nothing on the page said which of the two you were looking at. The reading is now printed with the brackets wherever the grouping changes the answer, and dropped where it does not, because A ∧ B ∧ C really does need none. A chain of NAND or NOR is refused outright with both bracketings offered, since neither operator is associative and no convention settles it.

The rows are unarguable. The reading is not.

Truth tables for boolean expressions, with the reading printed. A → B → C is shown as A → (B → C), because the other grouping is a different function and nothing on the page should leave that to be guessed.

How it works

A truth table has one right answer once the parse is agreed, so everything that can go wrong in a truth table generator is in the reading.

**Implication is right associative**, so A → B → C means A → (B → C). That is the convention in Enderton and in Huth and Ryan, and it matters: the other grouping, (A → B) → C, is true in five of the eight rows where this one is true in seven. The previous version of this tool parsed it in a while loop, which is left associative, and printed the header as A → B → C with no brackets, so nothing said which of the two it had computed. Here the brackets are printed wherever the grouping changes the answer, and dropped where it does not: A ∧ B ∧ C needs none because conjunction is associative.

**A chain of a non-associative operator is refused rather than answered.** (A ⊼ B) ⊼ C and A ⊼ (B ⊼ C) are different, so A NAND B NAND C has no single reading, and neither does a NOR chain. Both are refused by name with the two bracketings you might have meant, instead of being silently left-associated.

**A variable is read whole.** The previous tokeniser guarded its keywords with a test for an uppercase letter, so a lowercase continuation did not stop the match and `nota` came out as NOT applied to a: verified in a browser, it drew a two column table with headings a and ¬a for a variable that was never there. A run of letters, digits and underscores is taken whole here and then looked up, so `nota`, `orange`, `andy` and `norm` are all one variable each.

**And the precedence is on the page.** Every operator with its symbol, everything you can type for it, where it binds, how a chain of it reads and what it means, in one table, so nothing has to be discovered by experiment.

Alongside that: the all-true row at the top, which is how a printed table is laid out; variables in the order they first appear; working columns for every distinct sub-expression; the disjunctive and conjunctive normal forms read straight off the rows; a tautology, contradiction or contingency verdict with the count; an equivalence check against a second expression that gives a COUNTEREXAMPLE rather than a verdict when they differ; and export as tab separated text or as RFC 4180 CSV, where every field is quoted because a rendered expression can contain a comma.

Examples

  • A -> B -> C

    Read as A → (B → C), true in seven of eight rows. The left-associated reading, (A → B) → C, is true in five. They differ when A is false and B is true and C is false, among others.

  • A variable called nota

    One variable, two rows. A tokeniser that matches the keyword NOT and then only checks for an uppercase letter after it reads this as NOT applied to a and draws the wrong table entirely.

  • A NAND B NAND C

    Refused, with both bracketings offered, because NAND is not associative and there is no convention that settles it.

  • De Morgan's law

    NOT (A AND B) IFF (NOT A OR NOT B) comes out as a tautology: every row of the last column is true, which is the whole test.

How to use

  1. 1Type an expression, using AND OR NOT XOR NAND NOR IMPLIES IFF or their symbols
  2. 2Check the "Read as" line: that is the grouping the table was built from
  3. 3Read the table, the verdict and the normal forms
  4. 4Put a second expression in the equivalence box to test whether they are the same function

Key features

  • Implication right associative, with the brackets printed so the reading is visible
  • A chain of NAND or NOR refused by name, because neither is associative
  • Names read whole, so nota is a variable and not NOT applied to a
  • The full precedence and associativity table on the page
  • Working columns for every distinct sub-expression
  • Tautology, contradiction or contingency, with the true row count
  • Disjunctive and conjunctive normal forms read off the table
  • An equivalence check that returns a counterexample when two expressions differ
  • The all-true row at the top, as a printed table is laid out
  • Export as tab separated text or as properly quoted CSV
  • Up to twelve variables, which is 4,096 rows

Tips & best practices

  • If you are unsure how something grouped, read the "Read as" line rather than guessing from the header.
  • Use the equivalence box to check a simplification: if it is wrong you get the exact assignment where the two differ.
  • A tautology is the case where every row of the last column is true, which you can see directly rather than take on trust.

When this is useful

  • Checking a boolean simplification

    Put the original and the simplified form in the equivalence box; a difference comes back as a concrete assignment.

  • Teaching or learning propositional logic

    The precedence table and the printed reading make the conventions explicit rather than implicit.

  • Verifying a condition in code

    Translate it into the operators here and read off when it is true.

Frequently asked questions

How does A -> B -> C group?

As A → (B → C). Implication is right associative by convention, and the tool prints the brackets so the reading is visible. The other grouping is a genuinely different function: seven of the eight rows are true under the right-associated reading and five under the left.

Why will it not accept A NAND B NAND C?

Because NAND is not associative: (A NAND B) NAND C and A NAND (B NAND C) give different tables, and no convention settles which one a bare chain means. The tool refuses it and offers both bracketings rather than picking one silently. The same applies to NOR.

Can a variable be called "not" or "nota"?

A name is read whole and then looked up, so nota, orange, andy and norm are all single variables. A bare NOT with a space after it is still the operator. This is a real distinction: a tokeniser that checks only for an uppercase letter after a keyword turns nota into NOT a and draws a table for a variable that was never there.

Where does XOR sit in the precedence?

With OR and NOR, below AND and above implication. Conventions differ on this one, which is why the whole precedence table is printed on the page. XOR is associative, so a chain of it needs no brackets, and it is true when an odd number of its operands are.

Why is the all-true row at the top?

That is how a printed truth table is laid out in a textbook. Counting up in binary puts the all-false row first, which is the other common order; the layout is stated so it cannot surprise you.

How many variables can it handle?

Twelve, which is 4,096 rows. Past that a table stops being something a person reads, and the tool says so with the row count rather than trying.

What do the normal forms give me?

The disjunctive normal form is one conjunction per true row, and the conjunctive normal form is one disjunction per false row. Both are read straight off the table rather than derived, so they cannot disagree with it.

Related tools and how they differ

  • Number Base Converter: For bitwise algebra on whole numbers rather than on propositions.
  • Regex Tester & Debugger: For a different kind of expression whose reading is also easy to get wrong.

Private by design

Every calculation runs locally in your browser. Your numbers and expressions are not transmitted or stored.