typingtrainer.com Ads.txt file
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Typing Trainer Online - 100% Free Online Typing Web Tutor!</title>
<link rel="preconnect" href="https://01.cdn.mediatradecraft.com/" crossorigin=""/>
<link rel="preconnect" href="https://securepubads.g.doubleclick.net/" crossorigin=""/>
<link rel="preconnect" href="https://c.amazon-adsystem.com/" crossorigin=""/>
<link rel="preconnect" href="https://micro.rubiconproject.com/" crossorigin=""/>
<link rel="preconnect" href="https://cdn.privacy-mgmt.com/" crossorigin=""/>
<script>"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return o;"setGdprApplies"===n[0]?n.length>3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}();</script>
<script>(function () { var e = false; var c = window; var t = document; function r() { if (!c.frames["__uspapiLocator"]) { if (t.body) { var a = t.body; var e = t.createElement("iframe"); e.style.cssText = "display:none"; e.name = "__uspapiLocator"; a.appendChild(e) } else { setTimeout(r, 5) } } } r(); function p() { var a = arguments; __uspapi.a = __uspapi.a || []; if (!a.length) { return __uspapi.a } else if (a[0] === "ping") { a[2]({ gdprAppliesGlobally: e, cmpLoaded: false }, true) } else { __uspapi.a.push([].slice.apply(a)) } } function l(t) { var r = typeof t.data === "string"; try { var a = r ? JSON.parse(t.data) : t.data; if (a.__cmpCall) { var n = a.__cmpCall; c.__uspapi(n.command, n.parameter, function (a, e) { var c = { __cmpReturn: { returnValue: a, success: e, callId: n.callId } }; t.source.postMessage(r ? JSON.stringify(c) : c, "*") }) } } catch (a) { } } if (typeof __uspapi !== "function") { c.__uspapi = p; __uspapi.msgHandler = l; c.addEventListener("message", l, false) } })();</script>
<script>window.__gpp_addFrame=function(e){if(!window.frames[e])if(document.body){var t=document.createElement("iframe");t.style.cssText="display:none",t.name=e,document.body.appendChild(t)}else window.setTimeout(window.__gpp_addFrame,10,e)},window.__gpp_stub=function(){var e=arguments;if(__gpp.queue=__gpp.queue||[],__gpp.events=__gpp.events||[],!e.length||1==e.length&&"queue"==e[0])return __gpp.queue;if(1==e.length&&"events"==e[0])return __gpp.events;var t=e[0],p=e.length>1?e[1]:null,s=e.length>2?e[2]:null;if("ping"===t)p({gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnatv1","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}},!0);else if("addEventListener"===t){"lastId"in __gpp||(__gpp.lastId=0),__gpp.lastId++;var n=__gpp.lastId;__gpp.events.push({id:n,callback:p,parameter:s}),p({eventName:"listenerRegistered",listenerId:n,data:!0,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnatv1","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else if("removeEventListener"===t){for(var a=!1,i=0;i<__gpp.events.length;i++)if(__gpp.events[i].id==s){__gpp.events.splice(i,1),a=!0;break}p({eventName:"listenerRemoved",listenerId:s,data:a,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnatv1","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else"hasSection"===t?p(!1,!0):"getSection"===t||"getField"===t?p(null,!0):__gpp.queue.push([].slice.apply(e))},window.__gpp_msghandler=function(e){var t="string"==typeof e.data;try{var p=t?JSON.parse(e.data):e.data}catch(e){p=null}if("object"==typeof p&&null!==p&&"__gppCall"in p){var s=p.__gppCall;window.__gpp(s.command,(function(p,n){var a={__gppReturn:{returnValue:p,success:n,callId:s.callId}};e.source.postMessage(t?JSON.stringify(a):a,"*")}),"parameter"in s?s.parameter:null,"version"in s?s.version:"1.1")}},"__gpp"in window&&"function"==typeof window.__gpp||(window.__gpp=window.__gpp_stub,window.addEventListener("message",window.__gpp_msghandler,!1),window.__gpp_addFrame("__gppLocator"));</script>
<script>
window._sp_queue = [];
window._sp_ = {
config: {
accountId: 1247,
baseEndpoint: 'https://cdn.privacy-mgmt.com',
usnat: {
includeUspApi: true
},
custom: { },
gdpr: { },
events: {
onMessageChoiceSelect: function() {
console.log('[event] onMessageChoiceSelect', arguments);
},
onMessageReady: function() {
console.log('[event] onMessageReady', arguments);
},
onMessageChoiceError: function() {
console.log('[event] onMessageChoiceError', arguments);
},
onPrivacyManagerAction: function() {
console.log('[event] onPrivacyManagerAction', arguments);
},
onPMCancel: function() {
console.log('[event] onPMCancel', arguments);
},
onMessageReceiveData: function() {
console.log('[event] onMessageReceiveData', arguments);
},
onSPPMObjectReady: function() {
console.log('[event] onSPPMObjectReady', arguments);
},
onConsentReady: function (consentUUID, euconsent) {
console.log('[event] onConsentReady', arguments);
},
onError: function() {
console.log('[event] onError', arguments);
},
}
}
}
</script>
<script src='https://cdn.privacy-mgmt.com/unified/wrapperMessagingWithoutDetection.js' async></script>
<script src="https://c.amazon-adsystem.com/aax2/apstag.js" async="true"></script>
<script src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" async="true"></script><script src="https://01.cdn.mediatradecraft.com/typingtest/main/main.js?template=other" async="true"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script src="https://www.googletagmanager.com/gtag/js?id=G-63V1RNYK6V"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-63V1RNYK6V');
</script>
<!-- End Google Analytics -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha512-+NqPlbbtM1QqiK8ZAo4Yrj2c4lNQoGv8P79DPtKzj++l5jnN39rHA/xsqn8zE9l0uSoxaCdrOgFs6yjyfbBxSg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="/includes/trainer/bootstrap/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/3.0.1/mustache.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.35.4/es6-shim.min.js"></script>
<script src="CookieCl.js"></script>
<script src="CookieLoader.js"></script>
<script id="course_template" type="x-tmpl-mustache">
<div class="course collapsed" data-toggle="collapse" data-target="#{{course_id}}"
aria-expanded="false" aria-controls="{{course_id}}">
<div class="row course_info">
<img class="m-3" src="assets/images/icon_{{{course_name_icon}}}.png" width="50" height="50" alt="">
<div class="col">
<h2 class="pt-2">{{course_name}}</h2>
<p>{{course_intro}}</p>
</div>
<div class="chevron">
<i class="down fas fa-chevron-circle-down"></i>
<i class="up fas fa-chevron-circle-up"></i>
</div>
</div>
</div>
<div class="row showcase collapse" id="{{course_id}}" data-parent="#courses_view" >
{{{lesson_html}}}
</div>
</script>
<script id="lesson_template" type="x-tmpl-mustache">
<div class="col-sm-4 product-grid mb-4" name="">
<a href="applet.php?course_url={{{course_url}}}&lesson_id={{{lesson_id}}}"
target="_self">
<div class="product_train">
<span class="count {{lesson_status}}">Lesson {{lesson_num}}</span>
<div class="product-desc">
<span class="h3">{{lesson_name}}</h3>
</div>
<p class="lesson_intro">{{lesson_intro}}</p>
</div>
</a>
</div>
</script>
<script>
function lesson_status(courseId, lessonId, lessonName) {
var cl = new CookieLoader();
cl._name = "TyMa_sa_" + courseId + lessonId + lessonName + "7785";
cl.loadSettings();
return cl._d_lessonStatus;
}
var last_touched_num = 0;
var last_completed_num = 0;
var ad_added = false;
var all_courses = [];
function course_parser(course_url, course_num) {
var xmlhttp = null;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onload = function () {
var xmlDoc = new DOMParser().parseFromString(xmlhttp.responseText, 'text/xml');
var course = xmlDoc.getElementsByTagName("course")[0];
var course_id = course.getAttribute('id');
var course_name = course.getAttribute('name');
var course_name_icon = course_name.replace(/\s/gi, '_').toLowerCase();
var lessons = course.getElementsByTagName("lesson");
all_courses.push({id: course_num, name: course_id});
var course_template = $('#course_template').html();
var lesson_template = $('#lesson_template').html();
var rendered_lessons = '';
var all_lessons_complete = true;
for (var i = 0; i < lessons.length; i++) {
var exercises = lessons[i].getElementsByTagName("exercise");
var exercises_count = 0;
exercises = Array.prototype.slice.call( exercises );
var duration_sum = 0;
exercises.forEach((ex)=> {
exercises_count++;
duration_sum += Number(ex.getAttribute('duration').split(";")[0]);
});
duration_sum = duration_sum/60;
var l_status = lesson_status(course_id, lessons[i].id, lessons[i].getAttribute('name'));
if(l_status !== ""){
last_touched_num = course_num;
}
if(l_status !== "c" && l_status !=="p" ){
all_lessons_complete = false;
}
var lesson_html = Mustache.render( lesson_template, {
course_url: course_url,
lesson_id: lessons[i].id,
lesson_num: lessons[i].getAttribute('num'),
lesson_name: lessons[i].getAttribute('name'),
lesson_intro: exercises_count + ' activities, '+duration_sum+' minutes',
lesson_status: l_status
} );
rendered_lessons += lesson_html;
}
if(all_lessons_complete){
last_completed_num = course_num;
}
var course_html = Mustache.render( course_template, {
course_id: 'course_'+course_id,//(course_name).replace(' ', '_').toLowerCase(),
course_name: course_name,
course_name_icon: course_name_icon,
lesson_html: rendered_lessons,
course_intro: lessons.length + ' lessons',
} );
$('#courses_view').append(course_html);
}
xmlhttp.open("GET", 'assets/applet/' + course_url, false);
xmlhttp.send();
}
$(function() {
var course1 = "course_descriptions/fl5_us_sr_touchtyping.xml";
var course2 = "course_descriptions/fl5_us_speed.xml";
var course3 = "course_descriptions/fl5_us_numrow.xml";
var course4 = "course_descriptions/fl5_us_specials.xml";
var course5 = "course_descriptions/fl5_us_numpad.xml";
course_parser(course1, 1);
course_parser(course2, 2);
course_parser(course3, 3);
course_parser(course4, 4);
course_parser(course5, 5);
if(last_completed_num === last_touched_num){
last_touched_num++;
}
var last_touched_course = all_courses.find(item => item.id === last_touched_num);
var last_completed_course = all_courses.find(item => item.id === last_touched_num);
var c_name = last_touched_course ? last_touched_course.name : last_completed_course.name;
$('#course_'+c_name).collapse('show');
$('.accordion').on('shown.bs.collapse', function (e) {
var panelHeadingHeight = 90;//$('.panel-heading').height();
var animationSpeed = 500; // animation speed in milliseconds
var currentScrollbarPosition = $(document).scrollTop();
var topOfPanelContent = $(e.target).offset().top;
if ( currentScrollbarPosition > topOfPanelContent - panelHeadingHeight) {
$("html, body").animate({ scrollTop: topOfPanelContent - panelHeadingHeight }, animationSpeed);
}});
});
</script>
<link href="https://01.cdn.mediatradecraft.com/typingtest/main/main.css" media="print" onload="this.media='all'" rel="stylesheet"/> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link rel="stylesheet" href="/includes/trainer//bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<meta name="description" content="Learn touch typing and keyboarding skills online. Double your wpm speed today. Easy study material covers the entire keyboard. Free Typing Web Site." />
<meta name="keywords" content="touch typing, typing speed, typing practice, wpm" />
<meta name="referrer" content="origin">
<meta property='og:title' content='Typing Trainer - Educational Typing Web Site'/>
<meta property='og:image' content='/new-layout/img/wpm-laptop-share.jpg'/>
<meta property='og:description' content='Learn touch typing and keyboarding skills online. Double your typing speed today. Easy study material covers the entire keyboard. Free Typing Web Site.'/>
<meta property='og:url' content='/trainer/' />
</head>
<body class="select-page">
<div class="allwrap">
<div class="container">
<div class="row page">
<link rel="stylesheet" href="/components/styles/topNav.css?v=4"/>
<header data-theme="dark">
<nav>
<a class="logo" href="/">
<div class="logo-img"></div>
<div class="logo-txt"><span>TypingTest.</span>com</div>
</a>
<div id="hamburger" class="hamburger">
<span></span>
<span></span>
<span></span>
</div>
<ul>
<li>
<a href="/" class="" >
Typing Test
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/practice.php" class="" >
Typing Practice
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/trainer/" class="link-active" >
Typing Lessons
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/analyze.php" class="" >
Tricky Keys
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/benchmark.php" class="" >
Typing Benchmark
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/certificate.php" class="" >
Typing Certification
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/bigram-blitz/" class="" >
Bigram Blitz
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="https://www.sporcle.com/games/subcategory/typing" class="" target="_blank" rel="noopener">
Typing Games
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="https://www.sporcle.com/games/benzylene/typingspeed" class="" target="_blank" rel="noopener">
Typing Challenge
<i aria-hidden="true"></i>
</a>
</li>
</ul>
</nav>
</header>
<script>
document.addEventListener('DOMContentLoaded', function() {
const hamburger = document.getElementById('hamburger');
const header = document.querySelector('header');
hamburger.addEventListener('click', function() {
this.classList.toggle('active');
header.classList.toggle('active');
});
});
</script><link rel="stylesheet" href="/components/styles/leftNav.css?v=4"/>
<aside class="alternate">
<nav>
<a class="logo" href="/">
<div class="logo-img"></div>
<div class="logo-txt"><span>TypingTest.</span>com</div>
</a>
<ul>
<li>
<a href="/" class="" >
Typing Test
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/practice.php" class="" >
Typing Practice
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/trainer/" class="link-active" >
Typing Lessons
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/analyze.php" class="" >
Tricky Keys
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/benchmark.php" class="" >
Typing Benchmark
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/certificate.php" class="" >
Typing Certification
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="/bigram-blitz/" class="" >
Bigram Blitz
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="https://www.sporcle.com/games/subcategory/typing" class="" target="_blank" rel="noopener">
Typing Games
<i aria-hidden="true"></i>
</a>
</li><li>
<a href="https://www.sporcle.com/games/benzylene/typingspeed" class="" target="_blank" rel="noopener">
Typing Challenge
<i aria-hidden="true"></i>
</a>
</li>
</ul>
</nav>
</aside>
<div class="col content">
<div class="row bg-wrap">
<div class="col">
<div class="row divided justify-content-center">
<div class="ad__h90 ad__align">
<div id="top-banner-unit"></div>
</div>
</div>
<div class="row justify-content-center">
<div class="d-flex heading">
<img class="logo" src="./assets/images/logo_head.png" alt="" height="40">
<span class="title_2">Boost Your Typing - for Free!</span>
<span class="title_3"> </span>
</div>
</div>
<div class="row justify-content-center">
<div id="carousel" class="carousel carousel-fade" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="assets/images/TTrainer_slide_1.png" width="657px" height="359px" class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="assets/images/TTrainer_slide_2.png" width="657px" height="359px" class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="assets/images/TTrainer_slide_3.png" width="657px" height="359px" class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="assets/images/TTrainer_slide_4.png" width="657px" height="359px" class="d-block w-100" alt="...">
</div>
</div>
</div>
</div>
<div class="center">
<a title="What is Touch Typing" href="applet.php?course_url=course_descriptions/fl5_us_sr_touchtyping.xml&lesson_id=A001"
target="_self">
<button class="start-lesson-btn">
Introduction
</button>
</a>
<a title="Start learning the Home Row" href="applet.php?course_url=course_descriptions/fl5_us_sr_touchtyping.xml&lesson_id=A002"
target="_self">
<button class="start-lesson-btn">
Start Learning
</button>
</a>
</div>
<div class="row divided justify-content-center">
<div id="middle-banner-unit"></div>
</div>
<hr/>
<!-- courses -->
<div class="col showcase-col accordion" id="courses_view">
</div>
</div>
<div class="col-auto right-row">
<div id="right-rail-unit"></div>
</div>
</div>
<div class="row unwrap">
<div class="col showcase-col">
<div class="row showcase">
<div class="col-12 product-grid big">
<div class="product p-3">
<h1 class="text-center">Typing Trainer - 100% Free Online Tutor for Everyone</h1>
<div class=" d-flex product-desc">
<div class="col-6">
<p>Typing Trainer is a web course that teaches you the efficient touch-type method for free. As a result you can double your typing speed and eventually type as fluently as you speak.</p>
</div>
<div class="col-6">
<p>With our step-by-step approach you will learn the core keyboarding skills in web in just four hours - after that you're ready to use your new skill in everyday work. There's also over five hours of additional material covering speed building, numbers, symbols and more.</p>
</div>
</div>
</div>
</div>
<div class="col-sm-4 product-grid">
<div class="product">
<a href="/trainer/">
<div class="img" style="background-image: url(assets/images/screen_lesson.png)" alt="structured keyboarding lessons"></div>
</a>
<div class="product-desc">
<h2>Step-by-Step Approach </h2>
<p>Each lesson introduces a couple of new keys and provides a step-by-step training program from warm-ups and key drills all the way to fluent text entry. </p>
</div>
</div>
</div>
<div class="col-sm-4 product-grid">
<div class="product">
<a href="/trainer/">
<div class="img" style="background-image: url(assets/images/screen_keyboard.png)" alt="keyboard on-screen to help training"></div>
</a>
<div class="product-desc">
<h2>On-Screen Keyboard</h2>
<p>The on-screen keyboard makes learning new finger movements intuitive as it visualizes the paths your fingers should follow.</p>
</div>
</div>
</div>
<div class="col-sm-4 product-grid">
<div class="product">
<a href="/trainer/">
<div class="img" style="background-image: url(assets/images/screen_warmup.png)" alt="warm-up your fingers before classes"></div>
</a>
<div class="product-desc">
<h2>Motoric Warm-up</h2>
<p>Before introducing new keys your fingers are warmed up and oriented for the new movements - this will make learning much easier and faster.
</p>
</div>
</div>
</div>
<!--===============================================================-->
<div class="col-sm-4 product-grid">
<div class="product">
<a href="/trainer/">
<div class="img" style="background-image: url(assets/images/screen_worddrill.png)" alt="practice words and texts"></div>
</a>
<div class="product-desc">
<h2>Word and Text Drills</h2>
<p>Once you've learned the new key locations, they are integrated into the fluent typing process with varying word and text drills.</p>
</div>
</div>
</div>
<div class="col-sm-4 product-grid">
<div class="product">
<a href="/trainer/">
<div class="img" style="background-image: url(assets/images/screen_review.png)" alt="review your learning progress"></div>
</a>
<div class="product-desc">
<h2>Smart Review</h2>
<p>During training our web course detects those words you have difficulties with and then creates a targeted review exercise to hone them.
</p>
</div>
</div>
</div>
<div class="col-sm-4 product-grid">
<div class="product">
<a href="/trainer/">
<div class="img" style="background-image: url(assets/images/screen_paragraph.png)" alt="test your wpm"></div>
</a>
<div class="product-desc">
<h2>Skills Test</h2>
<p>At the end of each lesson you can assess your current skills with a Skills Test to see if you need some extra practice.</p>
</div>
</div>
</div>
</div>
<footer-text class="alternate">
<style>
#footer {
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
margin: 36px 0 24px 0;
width: 100%;
}
</style>
<link rel="stylesheet" href="/components/styles/footerText.css"/>
<footer id="footer">
<div class="footer-top">
<a class="logo" href="/">
<div class="logo-txt"><span>TypingTest.</span>com</div>
</a>
<span>© 2025 Typing Test LLC - part of <a href="https://www.sporcle.com/" target="_blank" rel="noopener">Sporcle</a></span>
</div>
<hr class="dotted" />
<span class="nav-links">
<a href="/privacy.php">Terms & Privacy</a>
<a href="/about.php">About</a>
<!-- <a href="https://www.sporcle.com/feedback/" target="_blank" rel="noopener">Feedback</a> -->
<a href="/blog.php">Blog</a>
<a href="https://www.sporcle.com/math-test/" target="_blank" rel="noopener">Math Test</a>
<a href="/feedback.php">Feedback</a>
</span>
</footer>
</footer-text> </div>
<div class="col-auto pseudo-col"></div>
</div>
</div>
</div>
</div>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"755f3541c7ea4b27bdd49a4e33f5385c","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>