PageSourceSearch

https://readlang.com/about

html readlang.com collected 2026-09-24 10:07:16 UTC 26,223 bytes, 552 lines download raw bytes

1<!doctype html>
2<html lang="en">
3  <head>
4    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5    <meta http-equiv="Cache-Control" content="no-cache" />
6    <meta http-equiv="content-language" content="en" />
7    
8    <meta name="apple-mobile-web-app-capable" content="yes" />
9    <meta name="HandheldFriendly" content="true" />
10    <meta
11      name="viewport"
12      content="width=device-width,initial-scale=1.0,user-scalable=0"
13    />
14    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
15    
16    <meta
17      property="og:image"
18      content="https://readlang.com/content/readlangLogo.png"
19    />
20    
21    <meta name="author" content="Steve Ridout" />
22    
23    
23<script>
24      "use strict";
25      window.READLANG = window.READLANG || {};
26      window.READLANG.splitTests = {};
27      window.READLANG.userID = "6ab4f654dd41f401e0190719";
28    
29      // Record exposure before any stylesheet or external script can delay it.
30      // Both arms must count early exits, including visitors whose artwork fails
31      // to load. keepalive preserves the request during immediate navigation.
32      window.READLANG.treatRabbits = "";
33      if (window.READLANG.treatRabbits) {
34        fetch("/api/experiment/treat", {
35          method: "POST",
36          keepalive: true,
37          headers: { "Content-Type": "application/json" },
38          body: JSON.stringify({
39            experiment: "landingPageRabbits1",
40            condition: window.READLANG.treatRabbits,
41          }),
42          // An unrecorded exposure just leaves this visitor out of the experiment.
43        }).catch(function () {});
44      }
45    </script>
45
46    
47    <link
48      rel="stylesheet"
49      href="/css/landingPages/landingPages.css?bust=967502f21f6f5fb5b057400e778280191b6d728b"
50      type="text/css"
51    />
52    <link
53      href="https://fonts.googleapis.com/css?family=Jost:200,300,300italic,400,400italic,500,600,700"
54      rel="stylesheet"
55      type="text/css"
56    />
57    <link rel="stylesheet" href="/external/font-awesome/css/font-awesome.min.css" />
58    
59    
60    <link rel="shortcut icon" href="/favicon-16.png" />
61    <link rel="apple-touch-icon-precomposed" href="/favicon-152.png" />
62    <link rel="apple-touch-icon" sizes="196x196" href="/favicon-196.png" />
63    <link rel="icon" sizes="32x32" href="/favicon-32.png" />
64    <link rel="icon" sizes="48x48" href="/favicon-48.png" />
65    <link rel="icon" sizes="152x152" href="/favicon-152.png" />
66    <link rel="icon" sizes="196x196" href="/favicon-196.png" />
67    
68    <link
69      rel="chrome-webstore-item"
70      href="https://chrome.google.com/webstore/detail/odpdkefpnfejbfnmdilmfhephfffmfoh"
71    />
72    
73    
73<script>
74      var _rollbarConfig = {
75        accessToken: "2174dfeba5b7427fa352fae8b9bd61ec",
76        captureUncaught: true,
77        captureUnhandledRejections: true,
78        payload: {
79          environment: "production",
80          client: {
81            javascript: {
82              source_map_enabled: true,
83              code_version: "967502f21f6f5fb5b057400e778280191b6d728b",
84              guess_uncaught_frames: true,
85            },
86          },
87        },
88        // Limit the number of error reports per page load
89        maxItems: 1,
90        checkIgnore: (isUncaught, args, payload) => {
91          // Ignore "errors" from 4XX responses, since these are expected behavior
92          const status =
93            payload?.body?.trace?.extra?.jqXHR?.status ??
94            payload?.body?.trace?.extra?.status;
95          if (status && /^4[0-9]{2}$/.test(status)) {
96            console.log("Ignoring 4XX error");
97            return true;
98          }
99          return false;
100        },
101      };
102      // Rollbar Snippet
103      // prettier-ignore
104      !function(r){function o(n){if(e[n])return e[n].exports;var t=e[n]={exports:{},id:n,loaded:!1};return r[n].call(t.exports,t,t.exports,o),t.loaded=!0,t.exports}var e={};return o.m=r,o.c=e,o.p="",o(0)}([function(r,o,e){"use strict";var n=e(1),t=e(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/2.2.10/rollbar.min.js",_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var a=n.setupShim(window,_rollbarConfig),l=t(_rollbarConfig);window.rollbar=n.Rollbar,a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,l)},function(r,o,e){"use strict";function n(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}function t(r,o){this.options=r,this._rollbarOldOnError=null;var e=s++;this.shimId=function(){return e},window&&window._rollbarShims&&(window._rollbarShims[e]={handler:o,messages:[]})}function a(r,o){var e=o.globalAlias||"Rollbar";if("object"==typeof r[e])return r[e];r._rollbarShims={},r._rollbarWrappedError=null;var t=new p(o);return n(function(){o.captureUncaught&&(t._rollbarOldOnError=r.onerror,i.captureUncaughtExceptions(r,t,!0),i.wrapGlobals(r,t,!0)),o.captureUnhandledRejections&&i.captureUnhandledRejections(r,t,!0);var n=o.autoInstrument;return o.enabled!==!1&&(void 0===n||n===!0||"object"==typeof n&&n.network)&&r.addEventListener&&(r.addEventListener("load",t.captureLoad.bind(t)),r.addEventListener("DOMContentLoaded",t.captureDomContentLoaded.bind(t))),r[e]=t,t})()}function l(r){return n(function(){var o=this,e=Array.prototype.slice.call(arguments,0),n={shim:o,method:r,args:e,ts:new Date};window._rollbarShims[this.shimId()].messages.push(n)})}var i=e(2),s=0,d=e(3),c=function(r,o){return new t(r,o)},p=d.bind(null,c);t.prototype.loadFull=function(r,o,e,t,a){var l=function(){var o;if(void 0===r._rollbarDidLoad){o=new Error("rollbar.js did not load");for(var e,n,t,l,i=0;e=r._rollbarShims[i++];)for(e=e.messages||[];n=e.shift();)for(t=n.args||[],i=0;i<t.length;++i)if(l=t[i],"function"==typeof l){l(o);break}}"function"==typeof a&&a(o)},i=!1,s=o.createElement("script"),d=o.getElementsByTagName("script")[0],c=d.parentNode;s.crossOrigin="",s.src=t.rollbarJsUrl,e||(s.async=!0),s.onload=s.onreadystatechange=n(function(){if(!(i||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){s.onload=s.onreadystatechange=null;try{c.removeChild(s)}catch(r){}i=!0,l()}}),c.insertBefore(s,d)},t.prototype.wrap=function(r,o,e){try{var n;if(n="function"==typeof o?o:function(){return o||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped&&(r._rollbar_wrapped=function(){e&&"function"==typeof e&&e.apply(this,arguments);try{return r.apply(this,arguments)}catch(e){var o=e;throw"string"==typeof o&&(o=new String(o)),o._rollbarContext=n()||{},o._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=o,o}},r._rollbar_wrapped._isWrap=!0,r.hasOwnProperty))for(var t in r)r.hasOwnProperty(t)&&(r._rollbar_wrapped[t]=r[t]);return r._rollbar_wrapped}catch(o){return r}};for(var u="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),f=0;f<u.length;++f)t.prototype[u[f]]=l(u[f]);r.exports={setupShim:a,Rollbar:p}},function(r,o){"use strict";function e(r,o,e){if(r){var t;"function"==typeof o._rollbarOldOnError?t=o._rollbarOldOnError:r.onerror&&!r.onerror.belongsToShim&&(t=r.onerror,o._rollbarOldOnError=t);var a=function(){var e=Array.prototype.slice.call(arguments,0);n(r,o,t,e)};a.belongsToShim=e,r.onerror=a}}function n(r,o,e,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null),o.handleUncaughtException.apply(o,n),e&&e.apply(r,n)}function t(r,o,e){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var n=function(r){var e=r.reason,n=r.promise,t=r.detail;!e&&t&&(e=t.reason,n=t.promise),o&&o.handleUnhandledRejection&&o.handleUnhandledRejection(e,n)};n.belongsToShim=e,r._rollbarURH=n,r.addEventListener("unhandledrejection",n)}}function a(r,o,e){if(r){var n,t,a="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDB
104Request,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(n=0;n<a.length;++n)t=a[n],r[t]&&r[t].prototype&&l(o,r[t].prototype,e)}}function l(r,o,e){if(o.hasOwnProperty&&o.hasOwnProperty("addEventListener")){for(var n=o.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var t=function(o,e,t){n.call(this,o,r.wrap(e),t)};t._rollbarOldAdd=n,t.belongsToShim=e,o.addEventListener=t;for(var a=o.removeEventListener;a._rollbarOldRemove&&a.belongsToShim;)a=a._rollbarOldRemove;var l=function(r,o,e){a.call(this,r,o&&o._rollbar_wrapped||o,e)};l._rollbarOldRemove=a,l.belongsToShim=e,o.removeEventListener=l}}r.exports={captureUncaughtExceptions:e,captureUnhandledRejections:t,wrapGlobals:a}},function(r,o){"use strict";function e(r,o){this.impl=r(o,this),this.options=o,n(e.prototype)}function n(r){for(var o=function(r){return function(){var o=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,o)}},e="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<e.length;n++)r[e[n]]=o(e[n])}e.prototype._swapAndProcessMessages=function(r,o){this.impl=r(this.options);for(var e,n,t;e=o.shift();)n=e.method,t=e.args,this[n]&&"function"==typeof this[n]&&("captureDomContentLoaded"===n||"captureLoad"===n?this[n].apply(this,[t[0],e.ts]):this[n].apply(this,t));return this},r.exports=e},function(r,o){"use strict";r.exports=function(r){return function(o){if(!o&&!window._rollbarInitialized){r=r||{};for(var e,n,t=r.globalAlias||"Rollbar",a=window.rollbar,l=function(r){return new a(r)},i=0;e=window._rollbarShims[i++];)n||(n=e.handler),e.handler._swapAndProcessMessages(l,e.messages);window[t]=n,window._rollbarInitialized=!0}}}}]);
105      // End Rollbar Snippet
106    </script>
106
107    
108    <!-- Google tag (gtag.js) -->
vendor: 80 bytes, lines 108-111
108
109    <script
110      async
111      src="https://www.googletagmanager.com/gtag/js?id=
111G-SZ1M22CFNJ
vendor: 21 bytes, lines 111-113
111"
112    ></script>
113    
113<script>
114      
vendor: 167 bytes, lines 114-120
114window.dataLayer = window.dataLayer || [];
115      function gtag() {
116        dataLayer.push(arguments);
117      }
118      gtag("js", new Date());
119    
120      gtag("config", "
120G-SZ1M22CFNJ
vendor: 8 bytes, lines 120-121
120");
121    
121</script>
121
122    
123    
123<script
124      defer
125      src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"
126    ></script>
126
127    
127<script defer src="/src/pages/landingPage.js?bust=967502f21f6f5fb5b057400e778280191b6d728b"></script>
127
128
129    <title>
130      Readlang | About
131    </title>
132
133    <meta
134      name="description"
135      content="Learn any language by reading what you love. Click words to translate, build vocabulary with smart flashcards, and read articles, books, and web pages in 100+ languages. Free to start."
136    />
137
138    <meta
139      name="keywords"
140      content="Reading,
141               Language Learning,
142               Languages,
143               Flashcards,
144               Spaced Repetition,
145               Extensive Reading,
146               Intensive Reading,
147               ESL,
148               Second Language Acquisition"
149    />
150
151
152    <meta property="og:title" content="Readlang | About" />
153    <meta property="og:description" content="Learn any language by reading what you love. Click words to translate, build vocabulary with smart flashcards, and read articles, books, and web pages in 100+ languages. Free to start." />
154    <meta property="og:type" content="website" />
155
156    
156<script type="application/ld+json">
157    {
158      "@context": "https://schema.org",
159      "@type": "Organization",
160      "name": "Readlang",
161      "url": "https://readlang.com",
162      "logo": "https://readlang.com/content/landingPages/bunny.svg",
163      "description": "Language learning through reading. Click to translate words, practice with smart flashcards, and read in 100+ languages.",
164      "founder": {
165        "@type": "Person",
166        "name": "Steve Ridout",
167        "url": "https://steveridout.com"
168      },
169      "sameAs": [
170        "https://www.facebook.com/readlang",
171        "https://x.com/Readlang"
172      ]
173    }
174    </script>
174
175
176  </head>
177  <body
178    id="aboutPage"
179    class=""
180  >
181    <div class="headerSection">
182      <div class="container">
183        <div class="max row primary-padding">
184          <div class="row logo_container">
185            <img
186              onclick="window.location.href='/'"
187              alt="logo"
188              src="/content/landingPages/bunny-logo.svg"
189              width="48"
190              height="41"
191              class="pointer logo"
192            />
193            <div class="text_futura logo_title">Readlang</div>
194          </div>
195    
196          <div class="row nav_options">
197            <a href="/landing-page" class="nav_item ">
198              Home
199            </a>
200            <a href="/features" class="nav_item ">
201              Features
202            </a>
203            <a href="/testimonials" class="nav_item ">
204              Testimonials
205            </a>
206            <a href="/pricing" class="nav_item ">
207              Pricing
208            </a>
209            <a href="/about" class="nav_item nav_item_active">
210              About
211            </a>
212            <button
213              class="outline button drop-shadow sign_in_button showLoginButton"
214            >
215              Sign in
216            </button>
217            <button class="mobile_menu">
218              <img
219                class="hamburgerButton"
220                alt="menu"
221                width="18"
222                height="18"
223                src="/content/landingPages/menu.png"
224              />
225              <img
226                class="closeButton"
227                alt="menu"
228                width="24"
229                height="24"
230                src="/content/landingPages/close.png"
231              />
232            </div>
233          </div>
234          <div class="drawer_container" style="display: none">
235            <a href="/" class="drawer_item ">
236              Home
237            </a>
238            <a href="/features" class="drawer_item ">
239              Features
240            </a>
241            <a href="/testimonials" class="drawer_item ">
242              Testimonials
243            </a>
244            <a href="/pricing" class="drawer_item ">
245              Pricing
246            </a>
247            <a href="/about" class="drawer_item drawer_item_active">
248              About
249            </a>
250          </div>
251        </div>
252      </div>
253    </div>
254    <main class="body_wrapper">
255      
256      <div
257        class="title_header primary-padding "
258      >
259        About Readlang
260      </div>
261      
262      <div class="aboutSection">
263        <div class="column primary-padding">
264          <div class="about_section_container">
265            <div class="about_title">
266              Readlang aspires to be the best reading tool in the world for language
267              learners. It lets you:
268            </div>
269            <div class="row_center about_item">
270              <div>
271                <img
272                  src="/content/landingPages/about-a.png"
273                  width="120"
274                  height="120"
275                  alt="about"
276                  class="about_image"
277                />
278              </div>
279              <div>
280                Read any <strong>native content</strong>. The Chrome extension and
281                browser bookmarklets enable reading or importing of almost any
282                website. Copy and paste or file upload enables you to read almost any
283                digital text you can get your hands on, including entire novels.
284              </div>
285            </div>
286            <div class="row_center about_item">
287              <div>
288                <img
289                  src="/content/landingPages/about-b.png"
290                  width="120"
291                  height="120"
292                  alt="about"
293                  class="about_image"
294                />
295              </div>
296              <div>
297                Rapidly <strong>understand new words and phrases</strong> with the aid
298                of translations, dictionaries and AI based explanations. Unlike some
299                other websites which are full of clutter and adverts, the reading
300                interface in Readlang is designed to be as clean and distraction free
301                as possible, allowing you to immerse yourself in the content of the
302                text as much as possible.
303              </div>
304            </div>
305            <div class="row_center about_item">
306              <div>
307                <img
308                  src="/content/landingPages/about-c.png"
309                  width="120"
310                  height="120"
311                  alt="about"
312                  class="about_image"
313                />
314              </div>
315              <div>
316                <strong>Learn words in context</strong> using flashcards. From all the
317                new words and phrases you encounter while reading, Readlang picks the
318                most useful words for you to practice based on
319                <a href="https://en.wikipedia.org/wiki/Word_lists_by_frequency"
320                  >word frequency lists</a
321                >. As you practice, Readlang schedules words using a
322                <a href="https://en.wikipedia.org/wiki/Spaced_repetition"
323                  >spaced repetition algorithm</a
324                >.
325              </div>
326            </div>
327            <div>
328              Take a minute to read the
329              <a href="/testimonials">
330                testimonials from happy language learners around the world
331              </a>
332              .
333            </div>
334          </div>
335        </div>
336      </div>
337      
338      <div class="videoSection">
339        <div class="primary-padding video_section_container">
340          <div class="column video_section_content">
341            <div class="video_section_title">Video</div>
342            <div class="video_section_tag_line">
343              A short Readlang explainer video from me, Steve.
344            </div>
345            <div class="iframe_container">
346              <iframe
347                class="video_iframe"
348                src="//www.youtube.com/embed/SSG4ahvzdls"
349                title="Readlang video"
350                allowfullscreen
351              ></iframe>
352            </div>
353          </div>
354        </div>
355      </div>
356      
357      <div class="teamSection">
358        <div class="column primary-padding">
359          <div class="team_container">
360            <div class="row team_container_content">
361              <div>
362                <img
363                  alt="steve"
364                  src="/content/landingPages/steve.png"
365                  width="300"
366                  height="300"
367                  class="steve_image"
368                />
369              </div>
370              
371              <div>
372                <div class="team_title">Team</div>
373                <div class="team_content_a">
374                  I'm Steve Ridout, creator of
375                  <a href="https://readlang.com">Readlang</a> and previously a staff
376                  software engineer at <a href="https://duolingo.com">Duolingo</a> where I created the
377                  Duolingo Stories feature. You can find more about me at
378                  <a href="https://steveridout.com">steveridout.com</a>.
379                </div>
380                <div class="team_content_b">
381                  I created Readlang because I couldn't find a simple tool to learn
382                  Spanish the way I wanted to, by reading novels and other native
383                  content.
384                </div>
385              </div>
386            </div>
387            <div>
388              <div class="team_title">Contact</div>
389              <div>
390                You can contact support or leave feedback via the
391                <a href="https://forum.readlang.com">feedback forum</a>.
392              </div>
393              <!-- discourage these for now, since I don't check them much
394              <div class="icon_container">
395                <a href="https://x.com/Readlang">
396                <img
397                  src="/content/landingPages/facebook-sq.png"
398                  alt="facebook"
399                  width="26"
400                  height="26"
401                />
402                </a>
403                <a href="https://www.facebook.com/readlang">
404                <img
405                  src="/content/landingPages/twitter-sq.png"
406                  alt="twitter"
407                  width="26"
408                  height="26"
409                />
410                </a>
411              </div>
412              -->
413            </div>
414          </div>
415        </div>
416      </div>
417      
418      <!-- 
419            <TeamSection />
420            <StartLearningWithBackgroundPattern /> -->
421      
422    </main>
423    <div class="footer">
424      <div class="max primary-padding">
425        <div class="row footer_top_container">
426          <div class="row section_left">
427            <div
428              onclick="window.location.href='/'"
429              class="column pointer logo_section"
430            >
431              <img
432                src="/content/landingPages/bunny.svg"
433                alt="Readlang logo"
434                width="48"
435                height="41"
436                class="logo"
437              />
438              <div class="text_futura logo_title">Readlang</div>
439            </div>
440            <div class="connect_and_get_section">
441              <div class="contact_section">
442                <div class="contact_section_title">Connect with us</div>
443                <div class="contact_section_links">
444                  <a href="https://www.facebook.com/readlang">
445                    <img
446                      width="16"
447                      height="16"
448                      src="/content/landingPages/facebook.png"
449                      alt="facebook"
450                    />
451                  </a>
452                  <a href="https://x.com/Readlang">
453                    <img
454                      width="16"
455                      height="16"
456                      src="/content/landingPages/twitter.png"
457                      alt="facebook"
458                    />
459                  </a>
460                </div>
461              </div>
462            </div>
463          </div>
464          <div class="row section_right">
465            <div class="links">
466              <a
467                href="https://www.youtube.com/watch?v=ntVQ2L5s6FI&list=PLIGa-eWCssj9K_PpNGLnIs8vcENanVx3_"
468                >Tutorial Videos</a
469              >
470              <a href="https://blog.readlang.com">Readlang Blog</a>
471              <a href="/webReader">Web Reader Extension &amp; Bookmarklet</a>
472              <a
473                href="https://forum.readlang.com/t/install-readlang-on-your-iphone-ipad-or-android-home-screen/45"
474                >Readlang for iOS and Android</a
475              >
476            </div>
477            <div class="links">
478              <a href="https://forum.readlang.com">Help &amp; Feedback</a>
479              <a href="/pricing">Pricing</a>
480              
481              <a href="/landing-page">Landing Page</a>
482              <a href="/about">About &amp; Contact</a>
483            </div>
484          </div>
485        </div>
486        <div class="row_center bottom_container">
487          <div class="bottom_item">Readlang 2026</div>
488          <a href="/termsOfService" class="bottom_item">Terms of Service</a>
489          <a href="/privacyPolicy" class="bottom_item">Privacy Policy</a>
490        </div>
491      </div>
492    </div>
493    <div id="loginDialog" class="modalDialog">
494      <button class="googleSignInButton button">
495        <div class="smallPadded"></div>
496      </button>
497      <form name=login class="emailSignInControls">
498        <p id=invalidCredentials >Email or password incorrect, please try again</p>
499        <table>
500          <tr>
501            <td>Email</td>
502            <td><input type=email name=email placeholder="Enter your email" /></td>
503          </tr>
504          <tr>
505            <td>Password</td>
506            <td><input type=password name=password placeholder="Enter your password" /></td>
507          </tr>
508          <tr>
509            <td><label for=rememberMe>Remember Me</label></td>
510            <td><input id=rememberMe type=checkbox name=rememberMe checked="checked"/></td>
511          </tr>
512        </table>
513      </form>
514      <button class="button wide validationError" id="loginButton">
515        <div class="smallPadded">
516          <span class="emailSignupText">Sign in with email</span>
517          <img class="throbber" src="/content/throbberDarkGreen.gif" style="padding-left:10px"/>
518        </div>
519      </button>
520      <a href="/start" class="button wide validationError" style="margin-top: 15px">
521        <div class="smallPadded">
522          <span class="emailSignupText">Create new account</span>
523        </div>
524      </a>
525      <div class="emailSignInControls" style="margin-top:10px">
526        <small>Forgot Password? <a href="#" id="showResetPassword" >Click here to reset</a></small>
527      </div>
528    </div>
529    <div id="resetPasswordDialog" class="modalDialog">
530      <table>
531        <tr>
532          <td>Email</td>
533          <td><input type=email name=email placeholder="Type email here" /></td>
534        </tr>
535      </table>
536      <button class="button lastButton wide" id=resetPasswordButton>
537        <div class=smallPadded>Reset Password</div>
538      </button>
539    </div>
540    
541    <div id="chromeExtensionDialog" class="modalDialog">
542      <h3>Thanks for installing our Chrome extension!</h3>
543      <p>Visit <i><strong>any web page</strong></i> in the language you are learning, and use the Readlang extension to help read it.</p>
544      <img class="screenshot small" src=/content/introStep1Crop.png />
545      <h3 style="margin-top:30px">Looking for websites to read now?</h3>
546      <a href="/links" class="button" style="width:100%"><div class="padded">Read suggested web-sites</div></a>
547    </div>
548    
549    <div id=modalBackground>
550    </div>
551  </body>
552</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.