<!DOCTYPE html ><html lang="en"><head><link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🃏</text></svg>"></link><link rel="preload" href="https://cdn.jsdelivr.net/gh/highlightjs/highlight.js@11.9.0/src/styles/github-dark.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"></link><noscript><link rel="stylesheet" hrf="https://cdn.jsdelivr.net/gh/highlightjs/highlight.js@11.9.0/src/styles/github-dark.min.css"></link></noscript><meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1.0"></meta><meta name="description" content="JSter catalogues JavaScript libraries per purpose"></meta><meta property="built" content="Wed Mar 04 2026 08:44:53 GMT+0000 (Coordinated Universal Time)"></meta><meta property="url" content="/"></meta><meta property="og:url" content="https://jster.net"></meta><meta property="og:type" content="website"></meta><meta property="og:site_name" content="JSter"></meta><meta property="og:title" content="JSter – JavaScript Catalog"></meta><meta property="og:description" content="JSter catalogues JavaScript libraries per purpose"></meta><meta property="og:image" content="https://jster.net/og.png"></meta><meta name="twitter:card" content="summary_large_image"></meta><meta property="twitter:site" content="JSter"></meta><meta property="twitter:title" content="JSter – JavaScript Catalog"></meta><meta property="twitter:description" content="JSter catalogues JavaScript libraries per purpose"></meta><title>JSter – JavaScript Catalog</title><style data-twind>/*!0,19,prose*/.prose{--tw-prose-body:rgba(55,65,81,1);--tw-prose-headings:rgba(17,24,39,1);--tw-prose-lead:rgba(75,85,99,1);--tw-prose-links:rgba(17,24,39,1);--tw-prose-bold:rgba(17,24,39,1);--tw-prose-counters:rgba(107,114,128,1);--tw-prose-bullets:rgba(209,213,219,1);--tw-prose-hr:rgba(229,231,235,1);--tw-prose-quotes:rgba(17,24,39,1);--tw-prose-quote-borders:rgba(229,231,235,1);--tw-prose-captions:rgba(107,114,128,1);--tw-prose-code:rgba(17,24,39,1);--tw-prose-pre-code:rgba(229,231,235,1);--tw-prose-pre-bg:rgba(31,41,55,1);--tw-prose-th-borders:rgba(209,213,219,1);--tw-prose-td-borders:rgba(229,231,235,1);--tw-prose-invert-body:rgba(209,213,219,1);--tw-prose-invert-headings:rgba(255,255,255,1);--tw-prose-invert-lead:rgba(156,163,175,1);--tw-prose-invert-links:rgba(255,255,255,1);--tw-prose-invert-bold:rgba(255,255,255,1);--tw-prose-invert-counters:rgba(156,163,175,1);--tw-prose-invert-bullets:rgba(75,85,99,1);--tw-prose-invert-hr:rgba(55,65,81,1);--tw-prose-invert-quotes:rgba(243,244,246,1);--tw-prose-invert-quote-borders:rgba(55,65,81,1);--tw-prose-invert-captions:rgba(156,163,175,1);--tw-prose-invert-code:rgba(255,255,255,1);--tw-prose-invert-pre-code:rgba(209,213,219,1);--tw-prose-invert-pre-bg:rgb(0 0 0 / 50%);--tw-prose-invert-th-borders:rgba(75,85,99,1);--tw-prose-invert-td-borders:rgba(55,65,81,1)}/*!27wr28,s*/*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}/*!27wr28,21*/::before,::after{--tw-content:''}/*!27wr28,r*/html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-feature-settings:normal}/*!27wr28,w*/body{margin:0;line-height:inherit}/*!27wr28,10*/hr{height:0;color:inherit;border-top-width:1px}/*!27wr28,y*/abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}/*!27wr28,w*/h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}/*!27wr28,w*/a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}/*!27wr28,y*/b,strong{font-weight:bolder}/*!27wr28,x*/code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-feature-settings:normal;font-size:1em}/*!27wr28,y*/small{font-size:80%}/*!27wr28,s*/sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}/*!27wr28,y*/sub{bottom:-0.25em}/*!27wr28,y*/sup{top:-0.5em}/*!27wr28,u*/table{text-indent:0;border-color:inherit;border-collapse:collapse}/*!27wr28,o*/button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:inherit;color:inherit;margin:0;padding:0}/*!27wr28,y*/button,select{text-transform:none}/*!27wr28,u*/button,[type='button'],[type='reset'],[type='submit']{-webkit-appearance:button;background-color:transparent;background-image:none}/*!27wr28,v*/:-moz-focusring{outline:auto}/*!27wr28,y*/:-moz-ui-invalid{box-shadow:none}/*!27wr28,y*/progress{vertical-align:baseline}/*!27wr28,v*/::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}/*!27wr28,w*/[type='search']{-webkit-appearance:textfield;outline-offset:-2px}/*!27wr28,21*/::-webkit-search-decoration{-webkit-appearance:none}/*!27wr28,t*/::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}/*!27wr28,v*/summary{display:list-item}/*!27wr28,v*/blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}/*!27wr28,t*/fieldset{margin:0;padding:0}/*!27wr28,v*/legend{padding:0}/*!27wr28,u*/ol,ul,menu{list-style:none;margin:0;padding:0}/*!27wr28,v*/textarea{resize:vertical}/*!27wr28,t*/input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}/*!27wr28,v*/button,[role="button"]{cursor:pointer}/*!27wr28,v*/:disabled{cursor:default}/*!27wr28,w*/img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}/*!27wr28,w*/img,video{max-width:100%;height:auto}/*!27wr28,v*/[hidden]{display:none}/*!27wr28,x*/.prose :where(a):not(:where(.not-prose *)){color:var(--tw-prose-links);text-decoration-line:underline;font-weight:500}/*!27wr28,w*/.prose :where(strong):not(:where(.not-prose *)){color:var(--tw-prose-bold);font-weight:600}/*!27wr28,v*/.prose :where(a strong,blockquote strong,thead th strong):not(:where(.not-prose *)){color:inherit}/*!27wr28,11*/.prose :where(ul):not(:where(.not-prose *)){list-style-type:disc}/*!27wr28,11*/.prose :where(ol):not(:where(.not-prose *)){list-style-type:decimal}/*!27wr28,11*/.prose :where(ol[type="A"]):not(:where(.not-prose *)){list-style-type:upper-alpha}/*!27wr28,11*/.prose :where(ol[type="a"]):not(:where(.not-prose *)){list-style-type:lower-alpha}/*!27wr28,11*/.prose :where(ol[type="A" s]):not(:where(.not-prose *)){list-style-type:upper-alpha}/*!27wr28,11*/.prose :where(ol[type="a" s]):not(:where(.not-prose *)){list-style-type:lower-alpha}/*!27wr28,11*/.prose :where(ol[type="I"]):not(:where(.not-prose *)){list-style-type:upper-roman}/*!27wr28,11*/.prose :where(ol[type="i"]):not(:where(.not-prose *)){list-style-type:lower-roman}/*!27wr28,11*/.prose :where(ol[type="I" s]):not(:where(.not-prose *)){list-style-type:upper-roman}/*!27wr28,11*/.prose :where(ol[type="i" s]):not(:where(.not-prose *)){list-style-type:lower-roman}/*!27wr28,11*/.prose :where(ol[type="1"]):not(:where(.not-prose *)){list-style-type:decimal}/*!27wr28,u*/.prose :where(ol,ul):not(:where(.not-prose *)){margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}/*!27wr28,w*/.prose :where(li):not(:where(.not-prose *)){margin-top:.5em;margin-bottom:.5em}/*!27wr28,y*/.prose :where(ol>li):not(:where(.not-prose *)),.prose :where(ul>li):not(:where(.not-prose *)){padding-left:.375em}/*!27wr28,w*/.prose>:where(ul>li p):not(:where(.not-prose *)){margin-top:.75em;margin-bottom:.75em}/*!27wr28,y*/.prose>:where(ul>li>*:first-child):not(:where(.not-prose *)),.prose>:where(ol>li>*:last-child):not(:where(.not-prose *)){margin-top:1.25em}/*!27wr28,y*/.prose>:where(ul>li>*:last-child):not(:where(.not-prose *)),.prose>:where(ol>li>*:last-child):not(:where(.not-prose *)){margin-bottom:1.25em}/*!27wr28,w*/.prose :where(ol>li):not(:where(.not-prose *))::marker{font-weight:400;color:var(--tw-prose-counters)}/*!27wr28,v*/.prose :where(ul>li):not(:where(.not-prose *))::marker{color:var(--tw-prose-bullets)}/*!27wr28,w*/.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where(.not-prose *)){margin-top:.75em;margin-bottom:.75em}/*!27wr28,y*/.prose :where(hr):not(:where(.not-prose *)){border-color:var(--tw-prose-hr);border-top-width:1;margin-top:3em;margin-bottom:3em}/*!27wr28,o*/.prose :where(blockquote):not(:where(.not-prose *)){margin-top:1.6em;margin-bottom:1.6em;padding-left:1em;font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:0.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019"}/*!27wr28,v*/.prose :where(blockquote p:first-of-type):not(:where(.not-prose *))::before{content:open-quote}/*!27wr28,v*/.prose :where(blockquote p:last-of-type):not(:where(.not-prose *))::after{content:close-quote}/*!27wr28,w*/.prose :where(p):not(:where(.not-prose *)){margin-top:1.25em;margin-bottom:1.25em}/*!27wr28,o*/.prose :where(h1):not(:where(.not-prose *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.889em;line-height:1.15}/*!27wr28,w*/.prose :where(h1 strong):not(:where(.not-prose *)){font-weight:900;color:inherit}/*!27wr28,o*/.prose :where(h2):not(:where(.not-prose *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.35}/*!27wr28,w*/.prose :where(h2 strong):not(:where(.not-prose *)){font-weight:800;color:inherit}/*!27wr28,o*/.prose :where(h3):not(:where(.not-prose *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}/*!27wr28,w*/.prose :where(h3 strong):not(:where(.not-prose *)){font-weight:700;color:inherit}/*!27wr28,q*/.prose :where(h4):not(:where(.not-prose *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}/*!27wr28,w*/.prose :where(h4 strong):not(:where(.not-prose *)){font-weight:700;color:inherit}/*!27wr28,y*/.prose :where(hr+*,h2+*,h3+*,h4+*):not(:where(.not-prose *)){margin-top:0}/*!27wr28,w*/.prose :where(img,video,figure):not(:where(.not-prose *)){margin-top:2em;margin-bottom:2em}/*!27wr28,w*/.prose :where(figure>*):not(:where(.not-prose *)){margin-top:0;margin-bottom:0}/*!27wr28,s*/.prose :where(figcaption):not(:where(.not-prose *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4;margin-top:.857em}/*!27wr28,u*/.prose :where(code):not(:where(.not-prose *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}/*!27wr28,v*/.prose :where(code):not(:where(.not-prose *))::before,.prose :where(code):not(:where(.not-prose *))::after{content:"`"}/*!27wr28,y*/.prose :where(h2 code):not(:where(.not-prose *)){font-size:.875em}/*!27wr28,y*/.prose :where(h3 code):not(:where(.not-prose *)){font-size:.9em}/*!27wr28,v*/.prose :where(a code,h1 code,h2 code,h3 code,h4 code,blockquote code,thead th code):not(:where(.not-prose *)){color:inherit}/*!27wr28,d*/.prose :where(pre):not(:where(.not-prose *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7;margin-top:1.714em;margin-bottom:1.714em;border-radius:0.375rem;padding-top:.857em;padding-right:1.143em;padding-bottom:.857em;padding-left:1.143em}/*!27wr28,l*/.prose :where(pre code):not(:where(.not-prose *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}/*!27wr28,v*/.prose :where(pre code):not(:where(.not-prose *))::before{content:none}/*!27wr28,v*/.prose :where(pre code):not(:where(.not-prose *))::after{content:none}/*!27wr28,m*/.prose :where(table):not(:where(.not-prose *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7}/*!27wr28,12*/.prose :where(thead):not(:where(.not-prose *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}/*!27wr28,o*/.prose :where(thead th):not(:where(.not-prose *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.571em;padding-bottom:.571em;padding-left:.571em}/*!27wr28,y*/.prose :where(thead th:first-child):not(:where(.not-prose *)){padding-left:0}/*!27wr28,y*/.prose :where(thead th:last-child):not(:where(.not-prose *)){padding-right:0}/*!27wr28,12*/.prose :where(tbody tr):not(:where(.not-prose *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}/*!27wr28,14*/.prose :where(tbody tr:last-child):not(:where(.not-prose *)){border-bottom-width:0}/*!27wr28,q*/.prose :where(tbody td,tfoot td):not(:where(.not-prose *)){vertical-align:baseline;padding-top:.571em;padding-right:.571em;padding-bottom:.571em;padding-left:.571em}/*!27wr28,y*/.prose :where(tbody td:first-child):not(:where(.not-prose *)),.prose :where(tfoot td:first-child):not(:where(.not-prose *)){padding-left:0}/*!27wr28,y*/.prose :where(tbody td:last-child):not(:where(.not-prose *)),.prose :where(tfoot td:last-child):not(:where(.not-prose *)){padding-right:0}/*!27wr28,q*/.prose :where(.lead):not(:where(.not-prose *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}/*!27wr28,y*/.prose>:where(:first-child):not(:where(.not-prose *)){margin-top:0}/*!27wr28,y*/.prose>:where(:last-child):not(:where(.not-prose *)){margin-bottom:0}/*!4fti4g,s,prose*/.prose{font-size:1rem;line-height:1.5rem;color:var(--tw-prose-body);max-width:65ch}/*!dbgidc,v,container*/.container{width:100%}/*!dbgidc,v,flex*/.flex{display:flex}/*!dbgidc,v,gap-4*/.gap-4{grid-gap:1rem;gap:1rem}/*!dbgidc,v,grid*/.grid{display:-ms-grid;display:grid}/*!dbgidc,v,inline*/.inline{display:inline}/*!dbgidc,v,p-2*/.p-2{padding:0.5rem}/*!dbgidc,v,p-4*/.p-4{padding:1rem}/*!dbgidc,w,bg-gray-100*/.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}/*!dbgidc,w,bg-violet-200*/.bg-violet-200{--tw-bg-opacity:1;background-color:rgba(221,214,254,var(--tw-bg-opacity))}/*!dbgidc,w,bg-yellow-100*/.bg-yellow-100{--tw-bg-opacity:1;background-color:rgba(254,249,195,var(--tw-bg-opacity))}/*!dbgidc,w,mx-auto*/.mx-auto{margin-left:auto;margin-right:auto}/*!dbgidc,w,my-4*/.my-4{margin-top:1rem;margin-bottom:1rem}/*!dbgidc,w,px-2*/.px-2{padding-left:0.5rem;padding-right:0.5rem}/*!dbgidc,w,px-4*/.px-4{padding-left:1rem;padding-right:1rem}/*!dbgidc,w,py-2*/.py-2{padding-top:0.5rem;padding-bottom:0.5rem}/*!dbgidc,w,py-4*/.py-4{padding-top:1rem;padding-bottom:1rem}/*!dbgidc,y,flex-col*/.flex-col{-webkit-flex-direction:column;flex-direction:column}/*!dbgidc,y,flex-wrap*/.flex-wrap{flex-wrap:wrap}/*!dbgidc,y,font-bold*/.font-bold{font-weight:700}/*!dbgidc,y,font-light*/.font-light{font-weight:300}/*!dbgidc,y,font-medium*/.font-medium{font-weight:500}/*!dbgidc,y,font-thin*/.font-thin{font-weight:100}/*!dbgidc,y,justify-between*/.justify-between{justify-content:space-between}/*!dbgidc,y,max-w-5xl*/.max-w-5xl{max-width:64rem}/*!dbgidc,11,grid-cols-3*/.grid-cols-3{-ms-grid-columns:repeat(3,minmax(0,1fr));grid-template-columns:repeat(3,minmax(0,1fr))}/*!dbgidc,11,underline*/.underline{text-decoration-line:underline}/*!dbgidc,14,border-b*/.border-b{border-bottom-width:1px}/*!dbgide,14,last:border-b-0*/.last\:border-b-0:last-child{border-bottom-width:0px}/*!dqr4zk,y,container*/@media (min-width:640px){.container{max-width:640px}}/*!dt91c0,y,container*/@media (min-width:768px){.container{max-width:768px}}/*!dy8u0w,y,container*/@media (min-width:1024px){.container{max-width:1024px}}/*!e38mps,y,container*/@media (min-width:1280px){.container{max-width:1280px}}/*!e5qj28,y,container*/@media (min-width:1536px){.container{max-width:1536px}}/*!ex7ev4,v,md:w-1/6*/@media (min-width:768px){.md\:w-1\/6{width:16.666667%}}/*!ex7ev4,v,md:w-5/6*/@media (min-width:768px){.md\:w-5\/6{width:83.333333%}}/*!ex7ev4,v,md:gap-0*/@media (min-width:768px){.md\:gap-0{grid-gap:0px;gap:0px}}/*!ex7ev4,v,md:gap-4*/@media (min-width:768px){.md\:gap-4{grid-gap:1rem;gap:1rem}}/*!ex7ev4,w,md:border-fuchsia-600*/@media (min-width:768px){.md\:border-fuchsia-600{--tw-border-opacity:1;border-color:rgba(192,38,211,var(--tw-border-opacity))}}/*!ex7ev4,y,md:flex-row*/@media (min-width:768px){.md\:flex-row{-webkit-flex-direction:row;flex-direction:row}}/*!ex7ev4,y,md:text-right*/@media (min-width:768px){.md\:text-right{text-align:right}}/*!ex7ev4,14,md:border-r-8*/@media (min-width:768px){.md\:border-r-8{border-right-width:8px}}</style></head><body><nav class="flex flex-col md:flex-row gap-4 md:gap-0 justify-between p-4 bg-gray-100"><div class="flex gap-4 font-thin"><a class="font-bold underline" href="/">JSter</a><a class="underline" href="/blog/">Blog</a><a class="underline" href="/catalog/">Catalog</a><a class="underline" href="/about/">About</a></div><div class="flex gap-4 font-light"><a class="underline" href="https://twitter.com/jsterlibs">@jsterlibs</a><a class="underline" href="https://buttondown.email/jster">Mailing list</a><a class="underline" href="/atom.xml">RSS</a></div></nav><main><div class="p-4 mx-auto max-w-5xl"><div class="mx-auto my-4 p-2 bg-yellow-100 prose"><p><strong>Note:</strong> The new site is still in beta. Please <a class="underline" href="https://github.com/jsterlibs/website-v2/issues">use the issue tracker
        for bug reports and feature
        requests</a>.</p>
</div><ul><li class="flex flex-col md:flex-row md:gap-4 border-b last:border-b-0"><h2 class="px-4 py-2 md:w-1/6 md:text-right md:border-r-8 md:border-fuchsia-600 font-medium">Essentials</h2><ul class="flex flex-wrap p-4 md:w-5/6 gap-4 font-light"><li class="inline"><a class="underline" href="/category/application-frameworks">Application Frameworks</a></li><li class="inline"><a class="underline" href="/category/mobile-frameworks">Mobile Frameworks</a></li><li class="inline"><a class="underline" href="/category/mvc-frameworks">MVC Frameworks</a></li><li class="inline"><a class="underline" href="/category/realtime-frameworks">Realtime Frameworks</a></li><li class="inline"><a class="underline" href="/category/desktop-gui">Desktop GUI</a></li><li class="inline"><a class="underline" href="/category/serverside-libraries">ServerSide Libraries</a></li><li class="inline"><a class="underline" href="/category/testing-frameworks">Testing Frameworks</a></li><li class="inline"><a class="underline" href="/category/templating-engines">Templating Engines</a></li><li class="inline"><a class="underline" href="/category/loaders">Loaders</a></li></ul></li><li class="flex flex-col md:flex-row md:gap-4 border-b last:border-b-0"><h2 class="px-4 py-2 md:w-1/6 md:text-right md:border-r-8 md:border-fuchsia-600 font-medium">UI</h2><ul class="flex flex-wrap p-4 md:w-5/6 gap-4 font-light"><li class="inline"><a class="underline" href="/category/ui-frameworks">UI Frameworks</a></li><li class="inline"><a class="underline" href="/category/windows-modals-popups">Windows, Modals, Popups</a></li><li class="inline"><a class="underline" href="/category/keyboard-wrappers">Keyboard Wrappers</a></li><li class="inline"><a class="underline" href="/category/form-widgets">Form Widgets</a></li><li class="inline"><a class="underline" href="/category/ui-components">UI Components</a></li><li class="inline"><a class="underline" href="/category/sliders">Sliders & Galleries</a></li><li class="inline"><a class="underline" href="/category/notifications">Notifications</a></li><li class="inline"><a class="underline" href="/category/wysiwyg-editors">WYSIWYG Editors</a></li><li class="inline"><a class="underline" href="/category/touch">Touch</a></li><li class="inline"><a class="underline" href="/category/layout">Layout</a></li><li class="inline"><a class="underline" href="/category/tours-guides">Tours & Guides</a></li></ul></li><li class="flex flex-col md:flex-row md:gap-4 border-b last:border-b-0"><h2 class="px-4 py-2 md:w-1/6 md:text-right md:border-r-8 md:border-fuchsia-600 font-medium">Multimedia</h2><ul class="flex flex-wrap p-4 md:w-5/6 gap-4 font-light"><li class="inline"><a class="underline" href="/category/game-engines">Game Engines</a></li><li class="inline"><a class="underline" href="/category/physics-libraries">Physics Libraries</a></li><li class="inline"><a class="underline" href="/category/animation-libraries">Animation Libraries</a></li><li class="inline"><a class="underline" href="/category/audio-libraries">Audio Libraries</a></li><li class="inline"><a class="underline" href="/category/presentation-libraries">Presentation Libraries</a></li><li class="inline"><a class="underline" href="/category/video-players">Video Players</a></li></ul></li><li class="flex flex-col md:flex-row md:gap-4 border-b last:border-b-0"><h2 class="px-4 py-2 md:w-1/6 md:text-right md:border-r-8 md:border-fuchsia-600 font-medium">Graphics</h2><ul class="flex flex-wrap p-4 md:w-5/6 gap-4 font-light"><li class="inline"><a class="underline" href="/category/canvas-wrappers">Canvas Wrappers</a></li><li class="inline"><a class="underline" href="/category/webgl">WebGL</a></li><li class="inline"><a class="underline" href="/category/image-manipulation">Image Manipulation</a></li><li class="inline"><a class="underline" href="/category/visualization-libraries">Visualization Libraries</a></li><li class="inline"><a class="underline" href="/category/color-libraries">Color Libraries</a></li><li class="inline"><a class="underline" href="/category/mapping-libraries">Mapping Libraries</a></li></ul></li><li class="flex flex-col md:flex-row md:gap-4 border-b last:border-b-0"><h2 class="px-4 py-2 md:w-1/6 md:text-right md:border-r-8 md:border-fuchsia-600 font-medium">Data</h2><ul class="flex flex-wrap p-4 md:w-5/6 gap-4 font-light"><li class="inline"><a class="underline" href="/category/data-structures">Data Structures</a></li><li class="inline"><a class="underline" href="/category/date-libraries">Date Libraries</a></li><li class="inline"><a class="underline" href="/category/storage-libraries">Storage Libraries</a></li><li class="inline"><a class="underline" href="/category/validation">Validation</a></li><li class="inline"><a class="underline" href="/category/strings">Strings</a></li><li class="inline"><a class="underline" href="/category/file-formats">File Formats</a></li></ul></li><li class="flex flex-col md:flex-row md:gap-4 border-b last:border-b-0"><h2 class="px-4 py-2 md:w-1/6 md:text-right md:border-r-8 md:border-fuchsia-600 font-medium">Development</h2><ul class="flex flex-wrap p-4 md:w-5/6 gap-4 font-light"><li class="inline"><a class="underline" href="/category/package-managers">Package Managers</a></li><li class="inline"><a class="underline" href="/category/timing">Timing</a></li><li class="inline"><a class="underline" href="/category/toolkits">Toolkits</a></li><li class="inline"><a class="underline" href="/category/code-protection">Code Protection</a></li><li class="inline"><a class="underline" href="/category/compilers-and-parsers">Language Compilers</a></li><li class="inline"><a class="underline" href="/category/debugging-tools">Debugging Tools</a></li><li class="inline"><a class="underline" href="/category/documentation-tools">Documentation Tools</a></li><li class="inline"><a class="underline" href="/category/build-utilities">Build Utilities</a></li></ul></li><li class="flex flex-col md:flex-row md:gap-4 border-b last:border-b-0"><h2 class="px-4 py-2 md:w-1/6 md:text-right md:border-r-8 md:border-fuchsia-600 font-medium">Utilities</h2><ul class="flex flex-wrap p-4 md:w-5/6 gap-4 font-light"><li class="inline"><a class="underline" href="/category/async-control-flow-event">Async, Control Flow, Event</a></li><li class="inline"><a class="underline" href="/category/class-system">Class System</a></li><li class="inline"><a class="underline" href="/category/i18n-l10n">I18n And L10n</a></li><li class="inline"><a class="underline" href="/category/dom">DOM</a></li><li class="inline"><a class="underline" href="/category/functional-programming">Functional Programming</a></li><li class="inline"><a class="underline" href="/category/math-libraries">Math Libraries</a></li><li class="inline"><a class="underline" href="/category/routing">Routing</a></li><li class="inline"><a class="underline" href="/category/selector-libraries">Selector Libraries</a></li></ul></li><li class="flex flex-col md:flex-row md:gap-4 border-b last:border-b-0"><h2 class="px-4 py-2 md:w-1/6 md:text-right md:border-r-8 md:border-fuchsia-600 font-medium">Applications</h2><ul class="flex flex-wrap p-4 md:w-5/6 gap-4 font-light"><li class="inline"><a class="underline" href="/category/html5-applications">Html5 Applications</a></li><li class="inline"><a class="underline" href="/category/static-site-generators">Static Site Generators</a></li><li class="inline"><a class="underline" href="/category/code-editors">Code Editors</a></li><li class="inline"><a class="underline" href="/category/prototyping-design">Design And Prototyping</a></li></ul></li></ul></div></main><footer class="bg-violet-200 px-2 py-4 font-light"><div class="flex flex-col container mx-auto gap-4"><section class="grid grid-cols-3 gap-4"><div class="flex flex-col"><h2>About</h2><div class="font-thin">JSter is a community-driven catalog of the most useful JavaScript
          libraries. Find the right tool for a work and do it effectively.</div></div><div class="flex flex-col"><h2>Navigation</h2><div class="flex flex-col md:flex-row gap-4 font-thin"><a class="underline" href="/blog/">Blog</a><a class="underline" href="/catalog/">Catalog</a><a class="underline" href="/about/">About</a></div></div><div class="flex flex-col"><h2>Credits</h2><div class="font-thin">JSter was created by passionate web developers Juho Vepsäläinen and
          Codegyre Developers Team (Michael Bodnarchuk and Nick Palamarchuk)</div></div></section></div></footer><script type="text/javascript" src="https://unpkg.com/sidewind@7.6.0/dist/sidewind.umd.production.min.js"></script></body></html>