Free Math Tests: Create Math Tests / Custom Math Tests

Version 1.49; October 24, 2021; BETA-10a Release

Special Note: I apologize for the retro interface. A lot of individuals (and a lot of school systems) have been using this simple generator for years. So, 1990s interface notwithstanding, I'm leaving it as-is for now.

This page was designed to help you easily generate and print randomly ordered math tests that are of varying levels of difficulty. Please use the Preference Table fields to indicate your preferences regarding type of test, level of difficulty, style, etc. Click the 'Generate' button below the Preference Table to create a printable test (given your criteria) and to optionally create an answer page. Test and answers will be displayed in two separate tabs or windows (depending on your browser). Once displayed, they can be printed.

NOTE: A companion advanced math page is now available for creating multi-operation problems (using parentheses), problems with exponents and roots, and non-parenthetical order-of-operation problems.

Feedback and suggestions for improvements can be sent to (or use the contact information at

(NOTE: If you are willing to translate the text of this page into another language please contact me.)

This page is still under development. Some combinations of input preferences have not yet been implemented; other combinations are illogical and automatically overridden (such as using 0 as a lower limit for division tests).

You might find it helpful to review the comments section, below. Alternatively, you might want to try clicking the 'generate' button and reviewing the resulting math test. Then, try adjusting options, generating new tests, and reviewing the custom-generated results.

    * * * * * * * * * * * * * * * * * * * * * * * *
 Select math test type: Addition test [Default]
Subtraction test
Multiplication test
Division test
Both addition and subtraction test
Combined multiplication and division test
Everything (mix of all four math test types)
>> Link to Multi-Op/Exp/Root Problems Page.
 Math test level number:   [Default is 10]
 Math test lower limit:
  [Default is 1]
 Math test style: Both values between Level# and Limit [Default]
One value <= 10; other value at or below Level#  
Second value usually equal to Lower Limit
Answer less than or equal to Level#
Second value = Lower Limit; range 1 to Level#
 Math test orientation: Problems displayed vertically [Default]
Problems displayed horizontally
 Problems per row:   [Default is 10; recommend 4 if horizontal]
 Total number of rows:   [Default is 10; recommend 25 if horizontal]
 Create math test using: Best coverage algorithm [Default]
Random values algorithm
 Randomly reorder math test? Yes [Default]
 Show answer window? Yes [Default]
 Math test font size: Largest
Medium Large
Medium Small
Small [Default]
 Blank rows between problems:    [Default is 2; recommend 1 if horizontal]
 Columns per problem:   [Default is 8; recommend 12 if horizontal]
 Optional custom test title(s): 
 (to force a line break, insert 
 a $ character in any line of text) 
 Optional test introduction: 
 (placed above the test). 
 Insert one or more $ characters
 to cause line breaks.
 Optional test instructions: 
 (placed at bottom of test). 
 Again, insert $ characters
 to cause line breaks.
 Other options: Use 'x' for multiplication symbols
 Remember your settings? Yes [Default]
No; restore defaults upon page reload


This page is designed to help students practice basic math skills (addition, subtraction, multiplication, and division) via printed math tests. 'Basic' is considered to consist of problems where both x and y (as in x+y, or x*y) are constrained to limits that you set.

Using the default values of 10 problems per row, and 10 rows per test, each test will attempt to fit the resulting 100 problems on a single page (using the default font).

Problem creation defaults to best-coverage algorithmic generation (versus random generation). To more easily see the algorithm, change 'Randomly reorder' to 'No'. You can select complete randomness by using the 'Create math test' option.

The logic also attempts to ensure that, for any given problem, it is not repeated in the two preceding problems, two succeeding problems, the problem directly above, or the problem directly below. It'll attempt an average of around 10,000 problem relocations, and then give up. (On a 'normal home computer' the time required to do this is way less than one second.)

Subtraction tests ensure that the second number is less than or equal to the first number.

Division tests use the parameters (such as test style) to set the divisor and quotient, then the dividend is calculated via multiplication (thereby avoiding fractions).

If you don't like the appearance of your printed test, try adjusting the 'Math test font size' button. Also, you can vary the number of problems per row, rows per test, spacing between rows, and number of columns per problem, according to your preferences. Default problem alignment is vertical. If you prefer a horizontal presentation, you'll need to adjust 'problems per row' (try 4), 'total number of rows' (try 25), 'blank rows between problems' (try 1), and 'columns per problem' (try 12). Of course, other values may work better on your computer.

When setting the 'Create math test using' option, if you set a Level# of 12 or less, then 'best coverage' may yield a better test for you. If you set a Level# of, say, 20 or more, then 'random values' may yield a test that is more useful to you.

Given 7 test types, 5 styles, test levels and limits that can range up to 999,999 (or more), and all the other options, there are literally billions of different test combinations that you can create. If you have the time to play with the various options and selections, you will hopefully be able to create math tests that are really close to being exactly what you want.

Finally, the last item in the preference table, 'Remember your settings', will only work if your browser security settings allow the use of cookies. Any cookies created by this page will automatically expire in 30 days.

NOTE: A companion advanced math page is now available for creating multi-operation problems such as (8+((4-3)-5))+6, problems with exponents such as 2^3, problems with roots such as SqRoot(64), and non-parenthetical order-of-operation problems such as: 18-3^2/3+5*2.

The advanced-operation math test generator has a variety of features similar to this page.

Observations and/or recommendations are certainly welcome.

Return to Abridge Technology homepage