🌟 🌟

🦎 Times Table Adventure 🦎

Fill in the grid, beat the clock, and become a multiplication hero!

🎮 Customize Your Practice Grid

Tap a number to lock that row and column — great for focusing on specific tables!

💡 How to Play
1️⃣

Pick your timer mode — count up to track your best time, or race against the 5-minute countdown!

2️⃣

Gray out tables you already know — this locks those rows/columns and shows the answers so you can focus on the hard ones.

3️⃣

Fill in all the blank cells then click Check My Answers for instant green and red feedback!

4️⃣

Submit your score to the leaderboard so you can track your improvement over time!

🃏 Flashcard Quiz Mode

Practice multiplication facts one at a time. Type your answer or tap the card to flip it!

Card 1 of 20
0
0
What is...
3 × 7
Tap to flip or type your answer below
The answer is
21
How did you do?
🏆 Leaderboard — Top Scores

Scores are saved on this device. Challenge yourself to beat your own best!

Rank Name Mode Score Time Date
No scores yet! Complete a practice grid or flashcard session to get on the board! 🎯
📄 Printable Worksheet Generator

Choose a worksheet style, then print or save as PDF — completely blank for pencil practice!

📊
Full 12×12 Grid
All 144 cells blank
🔢
Half Filled Grid
First 6 tables filled, rest blank
🎲
Random Blanks
Half the cells blank randomly
✏️
40 Random Facts
40 individual problems to solve

The Free Multiplication Practice Tool Kids Actually Want to Use

Times Table Adventure combines an interactive fill-in chart, flashcard quiz mode, timed challenges, a leaderboard, and printable worksheets -- all in one free tool. No login required, no ads in the way, just pure multiplication practice that makes math feel like a game.

Who Is Times Table Adventure For?

👧

2nd and 3rd Graders

Just starting to learn multiplication? Start with the 2s, 5s, and 10s. Use the gray-out feature to lock the tables you know and focus only on the ones that still trip you up.

🧒

4th and 5th Graders

Need to get faster? Use the 5-minute countdown timer to challenge yourself to complete the full 12x12 grid before time runs out. Then beat your own score on the leaderboard!

👩‍🏫

Teachers

Use the Worksheet Generator to print blank 12x12 grids for timed classroom challenges, send home the 40 Random Facts sheet for homework, or project the interactive grid on a whiteboard for whole-class practice.

👨‍👩‍👧

Parents and Homeschoolers

No subscription, no account, no setup. Just open the site and hand your child the keyboard. The leaderboard saves scores right on your device so you can track progress over time without any sign-up.

🎓

Special Education and Intervention

The gray-out feature is especially helpful for students who feel overwhelmed by a full 12x12 grid. Start with just the 2s and 3s, add more as confidence builds, and celebrate every small win on the leaderboard.

🏠

Summer Learning

Keep math skills sharp over summer break without fighting screen time battles. Times Table Adventure is short enough to squeeze in before screen time, fun enough that kids often want to keep going.

Fun Ways to Use Times Table Adventure

Try these activities to make practice more exciting at home or in the classroom.

⏱️ Beat the Clock Challenge

Turn on the 5-minute countdown timer and race to fill in the full 12x12 grid. Write your finish time on a sticky note on the fridge and try to beat it each day. Kids who practice this way often memorize all 144 facts within 2 to 3 weeks.

🃏 Flashcard Face-Off

Two players, same device. Take turns on the flashcard mode and compare scores at the end. Whoever gets more right chooses what is for dessert or picks the movie. Friendly competition makes facts stick faster than solo drilling.

📄 Friday Quiz Tradition

Every Friday, print a fresh worksheet from the Worksheet Generator, set a 5-minute kitchen timer, and let your child complete it with pencil and paper. Keep the finished sheets in a folder so they can look back and see how far they have come.

🎯 Master One Table at a Time

Use the gray-out checkboxes to show only ONE multiplication table at a time. Spend a full week on the 7s, for example, before moving on. Once a table feels solid, gray it out and let the tool show those answers automatically so you can focus on what is next.

🏆 Leaderboard Goal Setting

At the start of each week, have your child look at their leaderboard score from last week. Set one small goal together -- finish 10 more cells, get 2 more flashcards right, or shave 30 seconds off their time. Goals tied to real data are incredibly motivating for kids.

🖨️ Classroom Station Activity

Set up one device as a math station. Students rotate through, each doing a 10-card flashcard round or filling in a partial grid. Use the Half Filled worksheet option to give struggling students a scaffold, and the Full Grid for students who are ready for the challenge.

Why Repetition + Fun = Facts That Stick

Research on how kids learn math consistently shows that spaced repetition -- practicing the same facts across multiple short sessions -- is far more effective than one long study session. Times Table Adventure is designed around exactly this idea. Each mode hits the same facts in a different way: the grid builds pattern recognition, flashcards build instant recall, and printable worksheets build pencil-and-paper speed for classroom tests. Using all three together, even for just 10 minutes a day, gives kids three different memory pathways to the same answer.

Frequently Asked Questions

What grade level is this tool designed for? +

Times Table Adventure is designed for grades 2 through 5, covering multiplication facts from 1x1 through 12x12. The gray-out feature and adjustable flashcard range make it easy to scale up or down depending on where your child is right now.

Does my child need an account to use this? +

No account, no login, no email address needed. Just open the site and start practicing. Leaderboard scores are saved directly on your device so they are always available when you come back.

How do I print the worksheets? +

Go to the Worksheet tab, choose your style (full grid, half filled, random blanks, or 40 facts), add an optional student name, and click Preview and Print. Your browser's print dialog will open and you can print it or save it as a PDF.

What does the gray-out feature do? +

When you check a number in the gray-out panel, all cells in that row and column are filled in automatically and shown in gray. This lets you skip the facts you already know and focus your practice on only the ones that still need work. It is great for kids who have some tables mastered but are still struggling with others like 7s, 8s, or 9s.

How long should my child practice each day? +

Short daily sessions work better than long occasional ones. Even 10 minutes a day, 4 to 5 days a week, can produce noticeable improvement in 2 to 4 weeks. A good routine is one full grid attempt plus one round of flashcards -- that usually takes about 10 to 15 minutes total.

Times Table Adventure is a free multiplication practice tool for students in grades 2 through 5. All features including the interactive grid, flashcard quiz, leaderboard, and printable worksheets are completely free to use with no account required.

Great for classroom use, homeschool, homework help, and summer learning.

/* ── RESET & BASE ─────────────────────────────────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --purple: #6B4EFF; --purple-dk: #4B2FE0; --purple-lt: #EDE8FF; --pink: #FF6BFF; --pink-lt: #FFE8FF; --mint: #4ECBAC; --mint-lt: #E8FBF6; --yellow: #FFD93D; --yellow-lt: #FFFBE8; --orange: #FF8C42; --red: #FF4E4E; --green: #4CAF50; --green-lt: #E8F5E9; --blue: #42A5F5; --blue-lt: #E3F2FD; --bg: #F0EBFF; --white: #FFFFFF; --gray-lt: #F5F5F5; --gray: #E0E0E0; --text: #2D2250; --text-2: #6B5E8C; --shadow: 0 8px 32px rgba(107,78,255,0.15); --shadow-sm: 0 4px 16px rgba(107,78,255,0.1); --radius: 20px; --radius-sm: 12px; } html { scroll-behavior: smooth; } body { font-family: 'Nunito', sans-serif; background: var(--bg); color: var(--text); min-height: 100vh; overflow-x: hidden; } /* ── ANIMATED BACKGROUND ─────────────────────────────────────────────────── */ body::before { content: ''; position: fixed; inset: 0; background: radial-gradient(ellipse at 20% 10%, rgba(107,78,255,0.12) 0%, transparent 50%), radial-gradient(ellipse at 80% 90%, rgba(255,107,255,0.1) 0%, transparent 50%), radial-gradient(ellipse at 60% 40%, rgba(78,203,172,0.08) 0%, transparent 40%); pointer-events: none; z-index: 0; } /* ── HEADER ──────────────────────────────────────────────────────────────── */ header { background: linear-gradient(135deg, var(--purple-dk) 0%, var(--purple) 50%, var(--pink) 100%); color: white; text-align: center; padding: 28px 20px 24px; position: relative; overflow: hidden; border-bottom: 5px solid var(--pink); } header::before { content: ''; position: absolute; inset: 0; background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.05'%3E%3Ccircle cx='30' cy='30' r='10'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); } .header-inner { position: relative; z-index: 1; } header h1 { font-family: 'Fredoka', sans-serif; font-size: clamp(2rem, 6vw, 3rem); font-weight: 700; text-shadow: 0 3px 12px rgba(0,0,0,0.2); letter-spacing: 0.5px; } .header-sub { font-size: clamp(1rem, 3vw, 1.2rem); opacity: 0.9; margin-top: 6px; font-weight: 600; } /* Star decorations */ .stars { position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: none; overflow: hidden; } .star { position: absolute; font-size: 1.4rem; animation: float 4s ease-in-out infinite; opacity: 0.7; } .star:nth-child(1) { top: 15%; left: 5%; animation-delay: 0s; font-size: 1rem; } .star:nth-child(2) { top: 25%; right: 8%; animation-delay: 0.8s; font-size: 1.6rem; } .star:nth-child(3) { top: 60%; left: 3%; animation-delay: 1.5s; font-size: 1.2rem; } .star:nth-child(4) { top: 70%; right: 5%; animation-delay: 0.4s; font-size: 0.9rem; } .star:nth-child(5) { top: 10%; left: 30%; animation-delay: 2s; font-size: 1.1rem; } .star:nth-child(6) { top: 80%; right: 25%;animation-delay: 1.2s; font-size: 1.3rem; } @keyframes float { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-8px) rotate(10deg); } } /* ── MODE TABS ────────────────────────────────────────────────────────────── */ .mode-tabs { display: flex; gap: 0; background: var(--white); border-bottom: 3px solid var(--gray); position: sticky; top: 0; z-index: 100; box-shadow: 0 4px 16px rgba(107,78,255,0.08); } .mode-tab { flex: 1; padding: 14px 8px; font-family: 'Fredoka', sans-serif; font-size: clamp(0.85rem, 2.5vw, 1.1rem); font-weight: 600; border: none; background: transparent; color: var(--text-2); cursor: pointer; transition: all 0.2s; border-bottom: 3px solid transparent; margin-bottom: -3px; display: flex; align-items: center; justify-content: center; gap: 6px; } .mode-tab:hover { background: var(--purple-lt); color: var(--purple); } .mode-tab.active { color: var(--purple); border-bottom-color: var(--purple); background: var(--purple-lt); } .tab-emoji { font-size: 1.2em; } /* ── PANELS ───────────────────────────────────────────────────────────────── */ .panel { display: none; animation: fadeIn 0.3s ease; } .panel.active { display: block; } @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } /* ── CONTAINER ────────────────────────────────────────────────────────────── */ .container { max-width: 1100px; margin: 0 auto; padding: 24px 16px 60px; position: relative; z-index: 1; } /* ── CARDS ────────────────────────────────────────────────────────────────── */ .card { background: var(--white); border-radius: var(--radius); padding: 24px; box-shadow: var(--shadow); margin-bottom: 20px; } .card-title { font-family: 'Fredoka', sans-serif; font-size: 1.4rem; font-weight: 600; color: var(--purple); margin-bottom: 16px; display: flex; align-items: center; gap: 8px; } /* ── BUTTONS ──────────────────────────────────────────────────────────────── */ .btn { font-family: 'Fredoka', sans-serif; font-size: 1.1rem; font-weight: 600; padding: 12px 28px; border: none; border-radius: 50px; cursor: pointer; transition: all 0.2s; display: inline-flex; align-items: center; gap: 8px; text-decoration: none; } .btn:active { transform: scale(0.97); } .btn-primary { background: linear-gradient(135deg, var(--pink), var(--purple)); color: white; box-shadow: 0 4px 16px rgba(255,107,255,0.35); } .btn-primary:hover { box-shadow: 0 6px 20px rgba(255,107,255,0.5); transform: translateY(-1px); } .btn-secondary { background: var(--purple); color: white; box-shadow: 0 4px 16px rgba(107,78,255,0.3); } .btn-secondary:hover { background: var(--purple-dk); transform: translateY(-1px); } .btn-mint { background: var(--mint); color: white; box-shadow: 0 4px 16px rgba(78,203,172,0.3); } .btn-mint:hover { opacity: 0.9; transform: translateY(-1px); } .btn-outline { background: transparent; color: var(--purple); border: 2px solid var(--purple); } .btn-outline:hover { background: var(--purple-lt); } .btn-sm { font-size: 0.9rem; padding: 8px 18px; } .btn-lg { font-size: 1.25rem; padding: 16px 36px; } .btn-row { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 20px; } /* ── TIMER TOGGLE ─────────────────────────────────────────────────────────── */ .timer-toggle { display: flex; gap: 10px; margin: 12px 0 20px; } .timer-btn { flex: 1; padding: 12px; font-family: 'Fredoka', sans-serif; font-size: 1rem; font-weight: 600; border: 2px solid var(--gray); border-radius: 50px; cursor: pointer; background: var(--gray-lt); color: var(--text-2); transition: all 0.2s; } .timer-btn.active { background: linear-gradient(135deg, var(--pink), var(--purple)); color: white; border-color: transparent; box-shadow: 0 4px 14px rgba(255,107,255,0.3); } /* ── CHECKBOX GRID ────────────────────────────────────────────────────────── */ .checkbox-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(54px, 1fr)); gap: 8px; margin-top: 10px; } .num-check { display: flex; flex-direction: column; align-items: center; gap: 4px; cursor: pointer; } .num-check input { display: none; } .num-chip { width: 48px; height: 48px; border-radius: 12px; background: var(--gray-lt); border: 2px solid var(--gray); display: flex; align-items: center; justify-content: center; font-family: 'Fredoka', sans-serif; font-size: 1.2rem; font-weight: 600; color: var(--text-2); transition: all 0.2s; cursor: pointer; } .num-check input:checked + .num-chip { background: var(--purple); border-color: var(--purple); color: white; box-shadow: 0 4px 12px rgba(107,78,255,0.3); transform: scale(1.05); } /* ── TIMER BAR ────────────────────────────────────────────────────────────── */ .timer-bar { display: flex; align-items: center; justify-content: center; gap: 12px; background: var(--purple); color: white; border-radius: 50px; padding: 12px 28px; font-family: 'Fredoka', sans-serif; font-size: 1.5rem; font-weight: 700; margin: 0 auto 20px; max-width: 280px; box-shadow: 0 4px 16px rgba(107,78,255,0.3); transition: background 0.3s; } .timer-bar.warning { background: var(--red); animation: pulse 1s infinite; } @keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.75} } /* ── SCORE BANNER ─────────────────────────────────────────────────────────── */ .score-banner { display: none; text-align: center; font-family: 'Fredoka', sans-serif; font-size: 1.4rem; font-weight: 700; padding: 18px 24px; border-radius: var(--radius-sm); margin: 16px 0; animation: popIn 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); } @keyframes popIn { from { transform: scale(0.8); opacity: 0; } to { transform: scale(1); opacity: 1; } } .score-banner.great { background: var(--green-lt); color: #2E7D32; border: 2px solid #A5D6A7; } .score-banner.okay { background: var(--yellow-lt); color: #F57F17; border: 2px solid #FFE082; } .score-banner.retry { background: #FFE8E8; color: #C62828; border: 2px solid #FFCDD2; } /* ── MULTIPLICATION GRID ──────────────────────────────────────────────────── */ .grid-wrapper { overflow-x: auto; -webkit-overflow-scrolling: touch; } #multi-grid { border-collapse: separate; border-spacing: 3px; margin: 0 auto; width: 100%; max-width: 940px; } #multi-grid th, #multi-grid td { width: 58px; height: 58px; text-align: center; font-family: 'Fredoka', sans-serif; font-size: 1.25rem; font-weight: 600; border-radius: 8px; } #multi-grid th { background: var(--purple); color: white; font-size: 1.1rem; } #multi-grid td { background: var(--purple-lt); border: 2px solid rgba(107,78,255,0.15); transition: background 0.2s; } #multi-grid td.grayed { background: var(--gray) !important; color: var(--text-2); font-weight: 700; } #multi-grid td input[type="text"] { width: 100%; height: 100%; border: none; text-align: center; font-family: 'Fredoka', sans-serif; font-size: 1.3rem; font-weight: 600; background: transparent; color: var(--text); outline: none; } #multi-grid td:focus-within { background: white !important; border-color: var(--pink); box-shadow: 0 0 0 3px rgba(255,107,255,0.2); } #multi-grid td.correct { background: var(--green-lt) !important; color: #2E7D32; border-color: #A5D6A7; } #multi-grid td.wrong { background: #FFE8E8 !important; color: #C62828; border-color: #FFCDD2; } /* ── FLASHCARD MODE ───────────────────────────────────────────────────────── */ .flashcard-setup { display: flex; flex-wrap: wrap; gap: 12px; margin: 12px 0; } .range-select { flex: 1; min-width: 140px; padding: 10px 14px; font-family: 'Fredoka', sans-serif; font-size: 1rem; border: 2px solid var(--gray); border-radius: var(--radius-sm); color: var(--text); background: var(--white); cursor: pointer; outline: none; transition: border-color 0.2s; } .range-select:focus { border-color: var(--purple); } .flashcard-arena { display: none; } .flashcard-arena.active { display: block; } .progress-bar-wrap { background: var(--gray); border-radius: 50px; height: 12px; margin-bottom: 16px; overflow: hidden; } .progress-bar-fill { height: 100%; background: linear-gradient(90deg, var(--mint), var(--purple)); border-radius: 50px; transition: width 0.4s ease; } .flashcard { perspective: 1000px; width: 100%; max-width: 380px; height: 220px; margin: 0 auto 24px; cursor: pointer; } .flashcard-inner { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.55s cubic-bezier(0.4, 0, 0.2, 1); } .flashcard.flipped .flashcard-inner { transform: rotateY(180deg); } .flashcard-front, .flashcard-back { position: absolute; inset: 0; border-radius: var(--radius); backface-visibility: hidden; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 24px; } .flashcard-front { background: linear-gradient(135deg, var(--purple), var(--pink)); color: white; box-shadow: var(--shadow); } .flashcard-back { background: linear-gradient(135deg, var(--mint), var(--blue)); color: white; box-shadow: var(--shadow); transform: rotateY(180deg); } .flashcard-question { font-family: 'Fredoka', sans-serif; font-size: 3rem; font-weight: 700; text-shadow: 0 2px 8px rgba(0,0,0,0.15); } .flashcard-hint { font-size: 0.9rem; opacity: 0.8; font-weight: 600; } .flashcard-answer { font-family: 'Fredoka', sans-serif; font-size: 3.5rem; font-weight: 700; text-shadow: 0 2px 8px rgba(0,0,0,0.15); } .flashcard-input-row { display: flex; gap: 10px; max-width: 380px; margin: 0 auto 16px; } .fc-input { flex: 1; padding: 14px 18px; font-family: 'Fredoka', sans-serif; font-size: 1.4rem; font-weight: 600; text-align: center; border: 3px solid var(--gray); border-radius: var(--radius-sm); outline: none; transition: all 0.2s; color: var(--text); } .fc-input:focus { border-color: var(--purple); box-shadow: 0 0 0 3px rgba(107,78,255,0.15); } .fc-input.correct { border-color: var(--green); background: var(--green-lt); } .fc-input.wrong { border-color: var(--red); background: #FFE8E8; } .fc-stats { display: flex; gap: 10px; justify-content: center; margin-bottom: 16px; } .fc-stat { display: flex; align-items: center; gap: 6px; padding: 8px 16px; border-radius: 50px; font-family: 'Fredoka', sans-serif; font-size: 1rem; font-weight: 600; } .fc-stat.correct-stat { background: var(--green-lt); color: #2E7D32; } .fc-stat.wrong-stat { background: #FFE8E8; color: #C62828; } .fc-result { display: none; text-align: center; padding: 24px; background: var(--purple-lt); border-radius: var(--radius); margin-top: 16px; } .fc-result.show { display: block; animation: popIn 0.4s ease; } .fc-result-score { font-family: 'Fredoka', sans-serif; font-size: 2.5rem; font-weight: 700; color: var(--purple); } .fc-result-msg { font-size: 1.1rem; color: var(--text-2); margin-top: 8px; } /* ── LEADERBOARD ──────────────────────────────────────────────────────────── */ .leaderboard-form { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 20px; } .name-input { flex: 1; min-width: 160px; padding: 12px 16px; font-family: 'Fredoka', sans-serif; font-size: 1rem; border: 2px solid var(--gray); border-radius: var(--radius-sm); outline: none; color: var(--text); transition: border-color 0.2s; } .name-input:focus { border-color: var(--purple); } .leaderboard-table { width: 100%; border-collapse: separate; border-spacing: 0 6px; } .leaderboard-table th { font-family: 'Fredoka', sans-serif; font-size: 0.9rem; font-weight: 600; color: var(--text-2); text-align: left; padding: 8px 16px; text-transform: uppercase; letter-spacing: 1px; } .leaderboard-table td { padding: 14px 16px; background: var(--white); font-weight: 600; } .leaderboard-table td:first-child { border-radius: 12px 0 0 12px; } .leaderboard-table td:last-child { border-radius: 0 12px 12px 0; } .lb-row-1 td { background: linear-gradient(90deg, #FFF9E0, #FFFDE8); border: 1px solid #FFD93D; } .lb-row-2 td { background: linear-gradient(90deg, #F5F5F5, #FAFAFA); border: 1px solid #E0E0E0; } .lb-row-3 td { background: linear-gradient(90deg, #FFF3EE, #FFF8F5); border: 1px solid #FFCCBC; } .lb-rank { font-family: 'Fredoka', sans-serif; font-size: 1.3rem; font-weight: 700; } .lb-empty { text-align: center; padding: 40px; color: var(--text-2); font-size: 1rem; } .lb-filter { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; } .lb-filter-btn { padding: 6px 16px; font-family: 'Fredoka', sans-serif; font-size: 0.9rem; font-weight: 600; border: 2px solid var(--gray); border-radius: 50px; cursor: pointer; background: transparent; color: var(--text-2); transition: all 0.2s; } .lb-filter-btn.active { background: var(--purple); border-color: var(--purple); color: white; } /* ── WORKSHEET ────────────────────────────────────────────────────────────── */ .worksheet-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; margin-bottom: 20px; } .ws-option { border: 2px solid var(--gray); border-radius: var(--radius-sm); padding: 16px; cursor: pointer; transition: all 0.2s; text-align: center; } .ws-option:hover { border-color: var(--purple); background: var(--purple-lt); } .ws-option.selected { border-color: var(--purple); background: var(--purple-lt); } .ws-option-icon { font-size: 2rem; margin-bottom: 8px; } .ws-option-title { font-family: 'Fredoka', sans-serif; font-size: 1.1rem; font-weight: 600; color: var(--text); } .ws-option-desc { font-size: 0.85rem; color: var(--text-2); margin-top: 4px; } #worksheet-preview { display: none; } /* ── PRINT STYLES ─────────────────────────────────────────────────────────── */ @media print { body { background: white !important; } body::before { display: none; } header, .mode-tabs, .card:not(.print-card), footer, .btn-row, .timer-bar, .score-banner { display: none !important; } .print-card { display: block !important; box-shadow: none !important; border: none !important; } .print-content th { background: #6B4EFF !important; color: white !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; } .print-content .grayed { background: #E0E0E0 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; } #panel-grid { display: block !important; } .container { padding: 0 !important; } } /* ── FOOTER ───────────────────────────────────────────────────────────────── */ footer { text-align: center; padding: 30px 20px; color: var(--text-2); font-size: 0.9rem; position: relative; z-index: 1; } footer a { color: var(--purple); text-decoration: none; } /* ── RESPONSIVE ───────────────────────────────────────────────────────────── */ @media (max-width: 600px) { .card { padding: 16px; } .mode-tab { font-size: 0.8rem; padding: 10px 4px; gap: 3px; } .tab-emoji { font-size: 1rem; } #multi-grid th, #multi-grid td { width: 40px; height: 40px; font-size: 1rem; } #multi-grid td input[type="text"] { font-size: 1.1rem; } .flashcard { height: 180px; } .flashcard-question { font-size: 2.2rem; } .flashcard-answer { font-size: 2.8rem; } .btn-lg { font-size: 1.1rem; padding: 14px 24px; } .leaderboard-table th, .leaderboard-table td { padding: 10px 10px; font-size: 0.9rem; } }
🌟 🌟

🦎 Times Table Adventure 🦎

Fill in the grid, beat the clock, and become a multiplication hero!

🎮 Customize Your Practice Grid

Tap a number to lock that row and column — great for focusing on specific tables!

💡 How to Play
1️⃣

Pick your timer mode — count up to track your best time, or race against the 5-minute countdown!

2️⃣

Gray out tables you already know — this locks those rows/columns and shows the answers so you can focus on the hard ones.

3️⃣

Fill in all the blank cells then click Check My Answers for instant green and red feedback!

4️⃣

Submit your score to the leaderboard so you can track your improvement over time!

🃏 Flashcard Quiz Mode

Practice multiplication facts one at a time. Type your answer or tap the card to flip it!

Card 1 of 20
0
0
What is...
3 × 7
Tap to flip or type your answer below
The answer is
21
How did you do?
🏆 Leaderboard — Top Scores

Scores are saved on this device. Challenge yourself to beat your own best!

Rank Name Mode Score Time Date
No scores yet! Complete a practice grid or flashcard session to get on the board! 🎯
📄 Printable Worksheet Generator

Choose a worksheet style, then print or save as PDF — completely blank for pencil practice!

📊
Full 12×12 Grid
All 144 cells blank
🔢
Half Filled Grid
First 6 tables filled, rest blank
🎲
Random Blanks
Half the cells blank randomly
✏️
40 Random Facts
40 individual problems to solve