CINXE.COM
<!doctype html> <html lang="en" dir="ltr" class="plugin-pages plugin-id-default" data-has-hydrated="false"> <head> <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v3.5.2"> <title data-rh="true">Kysely | Kysely</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://kysely.dev/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:title" content="Kysely | Kysely"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://kysely.dev/"><link data-rh="true" rel="alternate" href="https://kysely.dev/" hreflang="en"><link data-rh="true" rel="alternate" href="https://kysely.dev/" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://MDKJWTIJFR-dsn.algolia.net" crossorigin="anonymous"><script data-rh="true">function insertBanner(){var n=document.createElement("div");n.id="__docusaurus-base-url-issue-banner-container";n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/</span> (default value)</p>\n <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n',document.body.prepend(n);var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),s=window.location.pathname,o="/"===s.substr(-1)?s:s+"/";e.innerHTML=o}document.addEventListener("DOMContentLoaded",(function(){void 0===window.docusaurus&&insertBanner()}))</script><link rel="preconnect" href="https://www.google-analytics.com"> <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-DWKJ0RXL1F"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-DWKJ0RXL1F",{anonymize_ip:!0})</script> <link rel="search" type="application/opensearchdescription+xml" title="Kysely" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.0a74e9bb.css"> <script src="/assets/js/runtime~main.4889a9b9.js" defer="defer"></script> <script src="/assets/js/main.8edd3d47.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):window.matchMedia("(prefers-color-scheme: light)").matches?t("light"):t("dark")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo.svg" alt="Kysely Logo" class="themedComponent_mlkZ themedComponent--light_NVdE" height="32" width="32"><img src="/img/logo.svg" alt="Kysely Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU" height="32" width="32"></div><b class="navbar__title text--truncate">Kysely</b></a><a class="navbar__item navbar__link" href="/docs/intro">Docs</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/kysely-org/kysely" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://kysely-org.github.io/kysely-apidoc" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">API docs<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS darkNavbarColorModeToggle_X3D1" type="button" disabled="" title="Switch between dark and light mode (currently dark mode)" aria-label="Switch between dark and light mode (currently dark mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div><header class="hero heroBanner_qdFl dark-theme"><div class="wave_H3LG"></div><div class="wave_H3LG"></div><div class="wave_H3LG"></div><div class="wave_H3LG"></div><div class="wave_H3LG"></div><div class="container" style="display:flex;flex-direction:column;align-items:center;justify-content:center;gap:32px;z-index:1"><div style="display:flex;flex-direction:column"><h1 class="heroTitle_qg2I">Kysely</h1><p class="heroSubtitle_jFu1">The type-safe SQL <br>query builder for TypeScript</p><span style="display:flex;flex-direction:row;gap:8px"><a href="/docs/getting-started" class="button button--primary button--md button--block" style="background:var(--gray12);color:var(--gray1);border-color:var(--gray12)">Getting started</a><a href="https://github.com/kysely-org/kysely" class="button button--secondary button--md button--block">View on GitHub</a></span></div><div class="videoContainer_h9xw"><video autoplay="" muted="" playsinline="" loop=""><source src="/demo.mp4" type="video/mp4"></video></div></div><span style="position:absolute;bottom:0;left:calc(50% - 20px);color:black;width:40px;font-size:24px;text-align:center">↓</span></header></div><main><section class="features_Gabx"><div class="container"><div class="row"><div class="col col--6" style="padding:10px"><div class="padding-horiz--md"><h3 class="featureTitle_G8b5"><span class="tickContainer_j6aN"><svg xmlns="http://www.w3.org/2000/svg" width="122.877" height="101.052" x="0" y="0" version="1.1" viewBox="0 0 122.877 101.052" xml:space="preserve" class="tickIcon_Lj2d"><path d="M4.43 63.63A14.383 14.383 0 01.003 53.52a14.393 14.393 0 014.015-10.281 14.372 14.372 0 0110.106-4.425 14.373 14.373 0 0110.283 4.012l24.787 23.851L98.543 3.989l1.768 1.349-1.77-1.355a2.27 2.27 0 01.479-.466A14.383 14.383 0 01109.243.022V.018l.176.016c3.623.24 7.162 1.85 9.775 4.766a14.383 14.383 0 013.662 10.412h.004l-.016.176a14.362 14.362 0 01-4.609 9.632L59.011 97.11l.004.004a2.157 2.157 0 01-.372.368 14.392 14.392 0 01-9.757 3.569 14.381 14.381 0 01-9.741-4.016L4.43 63.63z"></path></svg></span>Type-safety without compromises</h3><p class="featureDescription_m41O">Kysely's state-of-the-art, type-safe API provides precise result types and catches errors within queries at compile-time, giving high-performing teams the confidence to ship at greater velocity. Use `kysely-codegen` to make the database the source of types.</p></div></div><div class="col col--6" style="padding:10px"><div class="padding-horiz--md"><h3 class="featureTitle_G8b5"><span class="tickContainer_j6aN"><svg xmlns="http://www.w3.org/2000/svg" width="122.877" height="101.052" x="0" y="0" version="1.1" viewBox="0 0 122.877 101.052" xml:space="preserve" class="tickIcon_Lj2d"><path d="M4.43 63.63A14.383 14.383 0 01.003 53.52a14.393 14.393 0 014.015-10.281 14.372 14.372 0 0110.106-4.425 14.373 14.373 0 0110.283 4.012l24.787 23.851L98.543 3.989l1.768 1.349-1.77-1.355a2.27 2.27 0 01.479-.466A14.383 14.383 0 01109.243.022V.018l.176.016c3.623.24 7.162 1.85 9.775 4.766a14.383 14.383 0 013.662 10.412h.004l-.016.176a14.362 14.362 0 01-4.609 9.632L59.011 97.11l.004.004a2.157 2.157 0 01-.372.368 14.392 14.392 0 01-9.757 3.569 14.381 14.381 0 01-9.741-4.016L4.43 63.63z"></path></svg></span>What you see is what you get</h3><p class="featureDescription_m41O">Kysely is a thin abstraction layer over SQL, crafted by SQL lovers for SQL lovers, focusing on familiarity through naming and structure, and predictability through 1:1 compilation. Teams proficient in SQL can pick up Kysely and be productive in minutes.</p></div></div><div class="col col--6" style="padding:10px"><div class="padding-horiz--md"><h3 class="featureTitle_G8b5"><span class="tickContainer_j6aN"><svg xmlns="http://www.w3.org/2000/svg" width="122.877" height="101.052" x="0" y="0" version="1.1" viewBox="0 0 122.877 101.052" xml:space="preserve" class="tickIcon_Lj2d"><path d="M4.43 63.63A14.383 14.383 0 01.003 53.52a14.393 14.393 0 014.015-10.281 14.372 14.372 0 0110.106-4.425 14.373 14.373 0 0110.283 4.012l24.787 23.851L98.543 3.989l1.768 1.349-1.77-1.355a2.27 2.27 0 01.479-.466A14.383 14.383 0 01109.243.022V.018l.176.016c3.623.24 7.162 1.85 9.775 4.766a14.383 14.383 0 013.662 10.412h.004l-.016.176a14.362 14.362 0 01-4.609 9.632L59.011 97.11l.004.004a2.157 2.157 0 01-.372.368 14.392 14.392 0 01-9.757 3.569 14.381 14.381 0 01-9.741-4.016L4.43 63.63z"></path></svg></span>Write with great auto-completion</h3><p class="featureDescription_m41O">Your database schema types flow through Kysely's fluent API, offering a typing experience that's second only to full-blown database IDEs. Get intelligent, context-aware suggestions for functions, table names, and column names as you type.</p></div></div><div class="col col--6" style="padding:10px"><div class="padding-horiz--md"><h3 class="featureTitle_G8b5"><span class="tickContainer_j6aN"><svg xmlns="http://www.w3.org/2000/svg" width="122.877" height="101.052" x="0" y="0" version="1.1" viewBox="0 0 122.877 101.052" xml:space="preserve" class="tickIcon_Lj2d"><path d="M4.43 63.63A14.383 14.383 0 01.003 53.52a14.393 14.393 0 014.015-10.281 14.372 14.372 0 0110.106-4.425 14.373 14.373 0 0110.283 4.012l24.787 23.851L98.543 3.989l1.768 1.349-1.77-1.355a2.27 2.27 0 01.479-.466A14.383 14.383 0 01109.243.022V.018l.176.016c3.623.24 7.162 1.85 9.775 4.766a14.383 14.383 0 013.662 10.412h.004l-.016.176a14.362 14.362 0 01-4.609 9.632L59.011 97.11l.004.004a2.157 2.157 0 01-.372.368 14.392 14.392 0 01-9.757 3.569 14.381 14.381 0 01-9.741-4.016L4.43 63.63z"></path></svg></span>Build SQL queries with unmatched depth</h3><p class="featureDescription_m41O">Kysely supports building a wide range of SQL queries, clauses, functions, and expressions, including SELECT, INSERT, UPDATE, DELETE, MERGE, WITH, and more. When needed, you can also use raw SQL strings, even within structured queries.</p></div></div><div class="col col--6" style="padding:10px"><div class="padding-horiz--md"><h3 class="featureTitle_G8b5"><span class="tickContainer_j6aN"><svg xmlns="http://www.w3.org/2000/svg" width="122.877" height="101.052" x="0" y="0" version="1.1" viewBox="0 0 122.877 101.052" xml:space="preserve" class="tickIcon_Lj2d"><path d="M4.43 63.63A14.383 14.383 0 01.003 53.52a14.393 14.393 0 014.015-10.281 14.372 14.372 0 0110.106-4.425 14.373 14.373 0 0110.283 4.012l24.787 23.851L98.543 3.989l1.768 1.349-1.77-1.355a2.27 2.27 0 01.479-.466A14.383 14.383 0 01109.243.022V.018l.176.016c3.623.24 7.162 1.85 9.775 4.766a14.383 14.383 0 013.662 10.412h.004l-.016.176a14.362 14.362 0 01-4.609 9.632L59.011 97.11l.004.004a2.157 2.157 0 01-.372.368 14.392 14.392 0 01-9.757 3.569 14.381 14.381 0 01-9.741-4.016L4.43 63.63z"></path></svg></span>Query any SQL database</h3><p class="featureDescription_m41O">Kysely's community-driven dialect system makes it easy to implement support for any SQL database without waiting for the core team. It ships with official dialects for PostgreSQL, MySQL, MS SQL Server, and SQLite right out of the box.</p></div></div><div class="col col--6" style="padding:10px"><div class="padding-horiz--md"><h3 class="featureTitle_G8b5"><span class="tickContainer_j6aN"><svg xmlns="http://www.w3.org/2000/svg" width="122.877" height="101.052" x="0" y="0" version="1.1" viewBox="0 0 122.877 101.052" xml:space="preserve" class="tickIcon_Lj2d"><path d="M4.43 63.63A14.383 14.383 0 01.003 53.52a14.393 14.393 0 014.015-10.281 14.372 14.372 0 0110.106-4.425 14.373 14.373 0 0110.283 4.012l24.787 23.851L98.543 3.989l1.768 1.349-1.77-1.355a2.27 2.27 0 01.479-.466A14.383 14.383 0 01109.243.022V.018l.176.016c3.623.24 7.162 1.85 9.775 4.766a14.383 14.383 0 013.662 10.412h.004l-.016.176a14.362 14.362 0 01-4.609 9.632L59.011 97.11l.004.004a2.157 2.157 0 01-.372.368 14.392 14.392 0 01-9.757 3.569 14.381 14.381 0 01-9.741-4.016L4.43 63.63z"></path></svg></span>Run anywhere</h3><p class="featureDescription_m41O">Kysely is lightweight, ships both CommonJS and ESM, has zero dependencies, and avoids any environment-specific APIs. It can run in any JavaScript environment, including Node.js, Deno, Bun, AWS Lambda, Cloudflare Workers, and browsers.</p></div></div><div class="col col--6" style="padding:10px"><div class="padding-horiz--md"><h3 class="featureTitle_G8b5"><span class="tickContainer_j6aN"><svg xmlns="http://www.w3.org/2000/svg" width="122.877" height="101.052" x="0" y="0" version="1.1" viewBox="0 0 122.877 101.052" xml:space="preserve" class="tickIcon_Lj2d"><path d="M4.43 63.63A14.383 14.383 0 01.003 53.52a14.393 14.393 0 014.015-10.281 14.372 14.372 0 0110.106-4.425 14.373 14.373 0 0110.283 4.012l24.787 23.851L98.543 3.989l1.768 1.349-1.77-1.355a2.27 2.27 0 01.479-.466A14.383 14.383 0 01109.243.022V.018l.176.016c3.623.24 7.162 1.85 9.775 4.766a14.383 14.383 0 013.662 10.412h.004l-.016.176a14.362 14.362 0 01-4.609 9.632L59.011 97.11l.004.004a2.157 2.157 0 01-.372.368 14.392 14.392 0 01-9.757 3.569 14.381 14.381 0 01-9.741-4.016L4.43 63.63z"></path></svg></span>Take control over your migrations</h3><p class="featureDescription_m41O">Kysely includes optional up/down migration primitives, allowing you to move away from risky black box migration tools and write your own migrations. Use `kysely-ctl` to run your migrations directly in the terminal or within your CI/CD pipeline.</p></div></div><div class="col col--6" style="padding:10px"><div class="padding-horiz--md"><h3 class="featureTitle_G8b5"><span class="tickContainer_j6aN"><svg xmlns="http://www.w3.org/2000/svg" width="122.877" height="101.052" x="0" y="0" version="1.1" viewBox="0 0 122.877 101.052" xml:space="preserve" class="tickIcon_Lj2d"><path d="M4.43 63.63A14.383 14.383 0 01.003 53.52a14.393 14.393 0 014.015-10.281 14.372 14.372 0 0110.106-4.425 14.373 14.373 0 0110.283 4.012l24.787 23.851L98.543 3.989l1.768 1.349-1.77-1.355a2.27 2.27 0 01.479-.466A14.383 14.383 0 01109.243.022V.018l.176.016c3.623.24 7.162 1.85 9.775 4.766a14.383 14.383 0 013.662 10.412h.004l-.016.176a14.362 14.362 0 01-4.609 9.632L59.011 97.11l.004.004a2.157 2.157 0 01-.372.368 14.392 14.392 0 01-9.757 3.569 14.381 14.381 0 01-9.741-4.016L4.43 63.63z"></path></svg></span>Extend with plugins</h3><p class="featureDescription_m41O">Kysely's plugin system allows you tap into the process, and modify queries before compilation and/or their results after execution. This opens up various use cases, such as transforming camelCase names to snake_case and vice versa.</p></div></div></div></div></section><section class="quotesSection_mzAV"><div class="container quotesContainer_ak3Q"><h1>What the internet is saying</h1><p>Developers are loving Kysely for its simplicity and power.</p><div class="quotesInnerContainer_Zwg6"><a class="quoteContainer_IvTs" href="https://github.com/kysely-org/kysely/issues/352#issue-1612115150" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Tim Griesser's avatar picture" class="avatar__photo" src="/img/avatars/tgriesser.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Tim Griesser</span><small class="quoteSubtitle_SpZV">Knex.js creator, Cypress Staff Eng</small></div></div><small class="quoteText_Z6PS">👋 First just wanted to say this project looks awesome! Pretty close to what I wish Knex was if I started it now, with the affordances of modern TypeScript instead of 10 years ago when we were stuck in ES5 and Promises weren't even really an official language construct yet.</small><svg aria-hidden="true" class="icon_j1O1 darkIcon_NQbQ" width="98" height="96" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 98 96"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z"></path></svg></a><a class="quoteContainer_IvTs" href="https://discord.com/channels/890118421587578920/890118421587578925/1037692748825903114" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Orta Therox's avatar picture" class="avatar__photo" src="/img/avatars/orta.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Orta Therox</span><small class="quoteSubtitle_SpZV">Ex-TypeScript team</small></div></div><small class="quoteText_Z6PS">👋 been using Kysely for a few days in Deno and Node, just wanted to say it's been going really well and it feels like a nice abstraction - kudos!</small><svg aria-hidden="true" class="icon_j1O1" preserveAspectRatio="xMidYMid" version="1.1" viewBox="0 -28.5 256 256" xmlns="http://www.w3.org/2000/svg"><g><path d="M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z" fill="#5865F2" fill-rule="nonzero"></path></g></svg></a><a class="quoteContainer_IvTs" href="https://github.com/kysely-org/kysely/issues/320#issuecomment-2183966432" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Niels Sandholt Busch's avatar picture" class="avatar__photo" src="/img/avatars/niels.png"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Niels Sandholt Busch</span><small class="quoteSubtitle_SpZV">Maersk SWE</small></div></div><small class="quoteText_Z6PS">We are using Kysely in production at Maersk inventory control!</small><svg aria-hidden="true" class="icon_j1O1 darkIcon_NQbQ" width="98" height="96" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 98 96"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/gudmundur/status/1740075197179605250" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Guðmundur Bjarni Olafsson's avatar picture" class="avatar__photo" src="/img/avatars/gudmundur.png"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Guðmundur Bjarni Olafsson</span><small class="quoteSubtitle_SpZV">Vercel Principal SWE</small></div></div><small class="quoteText_Z6PS">I made a strong recommendation internally for using Kysely for a greenfield service that's in the works. Looks very solid. 👌🏻</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/catalinmpit/status/1837850745242104318" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Catalin Pit's avatar picture" class="avatar__photo" src="/img/avatars/catalin.png"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Catalin Pit</span><small class="quoteSubtitle_SpZV">Documenso SWE</small></div></div><small class="quoteText_Z6PS">Kysely is fantastic! We use it at @documenso with Prisma.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/thdxr/status/1566512393500463104" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Dax "thdxr" Raad's avatar picture" class="avatar__photo" src="/img/avatars/daxraad.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Dax "thdxr" Raad</span><small class="quoteSubtitle_SpZV">SST core team, Terminal co-founder</small></div></div><small class="quoteText_Z6PS">really excited to see Kysely get more attention - been banging this drum for a while and we've integrated pretty deeply with it at SST incidentally its codebase remains the best Typescript codebase I have ever seen - worth poking around</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/jullerino/status/1676687249998598148" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Julius Marminge's avatar picture" class="avatar__photo" src="/img/avatars/julius.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Julius Marminge</span><small class="quoteSubtitle_SpZV">tRPC & create-t3-app core team</small></div></div><small class="quoteText_Z6PS">Utterly astounded by how Kysely manages to make all of this typesafe. Seems like no matter how complex you get, it can infer it correctly.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/galstar/status/1740049724810695135" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Gal Schlezinger's avatar picture" class="avatar__photo" src="/img/avatars/gal.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Gal Schlezinger</span><small class="quoteSubtitle_SpZV">fnm creator, Vercel SWE</small></div></div><small class="quoteText_Z6PS">I love SQL, and I love migrations, most tools don’t provide good migration tools and fine grained control like Kysely which is why it’s my favorite.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/yusukebe/status/1581775103167066112" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Yusuke "yusukebe" Wada's avatar picture" class="avatar__photo" src="/img/avatars/yusuke.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Yusuke "yusukebe" Wada</span><small class="quoteSubtitle_SpZV">Hono creator, Cloudflare DevRel</small></div></div><small class="quoteText_Z6PS">Kysely is great. D1 will be great. This is great.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/AmanVirk1/status/1753348028139024628" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Harminder Virk's avatar picture" class="avatar__photo" src="/img/avatars/harminder.png"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Harminder Virk</span><small class="quoteSubtitle_SpZV">AdonisJS creator, Medusa SWE</small></div></div><small class="quoteText_Z6PS">If not Lucid, Kysely is what I would recommend everyone use. It presents itself as a type-safe SQL query builder and delivers 100% on that promise.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/pilcrowonpaper/status/1675135710981165057" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt=""pilcrow"'s avatar picture" class="avatar__photo" src="/img/avatars/pilcrowonpaper.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">"pilcrow"</span><small class="quoteSubtitle_SpZV">Lucia creator</small></div></div><small class="quoteText_Z6PS">Ok, so I'm not a big fan of Drizzle. I don't like how I have to import everything when declaring schemas and queries, and I just prefer the simplicity and the overall API of Kysely.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/BHolmesDev/status/1683505989465645056" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Ben Holmes's avatar picture" class="avatar__photo" src="/img/avatars/benholmes.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Ben Holmes</span><small class="quoteSubtitle_SpZV">Astro SWE</small></div></div><small class="quoteText_Z6PS">I really like Prisma for schemas and Kysely for querying. Drizzle feels... younger for schemas, but also quite nice</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/t3dotgg/status/1649539910037311495" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Theo "t3dotgg" Browne's avatar picture" class="avatar__photo" src="/img/avatars/theo.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Theo "t3dotgg" Browne</span><small class="quoteSubtitle_SpZV">Uploadthing creator, Ping.gg CEO</small></div></div><small class="quoteText_Z6PS">kysely is dope too. Drizzle and kysely are the frontrunners for "new db tools that really understand JS needs" atm</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/nexxeln/status/1676975946606452737" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Shoubhit "nexxel" Dash's avatar picture" class="avatar__photo" src="/img/avatars/nexxel.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Shoubhit "nexxel" Dash</span><small class="quoteSubtitle_SpZV">create-t3-app author, Leapflow CTO</small></div></div><small class="quoteText_Z6PS">kysely is great btw</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/leeerob/status/1576929372811849730" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Lee "leerob" Robinson's avatar picture" class="avatar__photo" src="/img/avatars/leerob.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Lee "leerob" Robinson</span><small class="quoteSubtitle_SpZV">Vercel VP Product</small></div></div><small class="quoteText_Z6PS">Type-safe SQL queries with PlanetScale and Kysely 😍</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/ngriffin_uk/status/1599891725404676096" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Nicholas Griffin's avatar picture" class="avatar__photo" src="/img/avatars/nicholas.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Nicholas Griffin</span><small class="quoteSubtitle_SpZV">sqs-consumer maintainer, BBC SWE</small></div></div><small class="quoteText_Z6PS">I don't actually like prisma that much, I prefer Kysely, not an ORM though.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/gimenete/status/1653121152854765569" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Alberto "gimenete" Gimeno's avatar picture" class="avatar__photo" src="/img/avatars/alberto.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Alberto "gimenete" Gimeno</span><small class="quoteSubtitle_SpZV">Railway SWE</small></div></div><small class="quoteText_Z6PS">I'm a happy Kysely user. It's great to see that the code I'm writing now can work with serverless PostgreSQL now!</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/gugaguichard/status/1844896761468551457" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Guga Guichard's avatar picture" class="avatar__photo" src="/img/avatars/guga.png"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Guga Guichard</span><small class="quoteSubtitle_SpZV">string-ts creator, Seasoned Partner</small></div></div><small class="quoteText_Z6PS">I've been seeing a lot of discussions about ORMs vs raw SQL. What about strongly typed SQL query builders? Kysely is in the sweet spot! Best DX with total freedom I've seen in decades.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/imbereket/status/1691066440294481920" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Bereket "Bek Cru" Engida's avatar picture" class="avatar__photo" src="/img/avatars/bekacru.png"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Bereket "Bek Cru" Engida</span><small class="quoteSubtitle_SpZV">better-auth creator</small></div></div><small class="quoteText_Z6PS">I don’t think they have similar goals from what I see. Drizzle is more dedicated into marketing and having every user possible like prisma but kysely kinda just don’t care about that for most part. And in my experience prisma + kysley is better than drizzle.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/rcoundon/status/1676244054109978624" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Ross Coundon's avatar picture" class="avatar__photo" src="/img/avatars/ross.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Ross Coundon</span><small class="quoteSubtitle_SpZV">leadent digital CTO</small></div></div><small class="quoteText_Z6PS">I particularly like Kysely here, it's a type-safe query builder and as such doesn't enforce the specifics of an ORM on you, therefore I feel, in the medium-to-long term, it'll save you the time and effort of working around ORM-specific and enforced structures/approaches</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/elitasson/status/1642090379066449920" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Johan Eliasson's avatar picture" class="avatar__photo" src="/img/avatars/johan.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Johan Eliasson</span><small class="quoteSubtitle_SpZV">OneLab CTO</small></div></div><small class="quoteText_Z6PS">Instead of Prisma, I'm testing Kysely, Kysely Codegen, and Atlas. Works great.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/ralex1993/status/1677632989260390403" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="R. Alex Anderson's avatar picture" class="avatar__photo" src="/img/avatars/alexanderson.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">R. Alex Anderson</span><small class="quoteSubtitle_SpZV">Thorium Nova creator</small></div></div><small class="quoteText_Z6PS">Shout out to Kysely for adding extensive JSDoc comments above the methods. It makes it much easier to figure out how to use it the way I want without having to dig into the docs. (though the docs are vv good too)</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/mehulmpt/status/1650480912759685120" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Mehul Mohan's avatar picture" class="avatar__photo" src="/img/avatars/mehul.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Mehul Mohan</span><small class="quoteSubtitle_SpZV">Codedamn Founder</small></div></div><small class="quoteText_Z6PS">We went with query builder because we did not have more time to waste on ORMs. ORMs might be great but we have the technical capability to pull off just using a query builder. However, we type safety and sanitization for DX and security was a must - hence Kysely.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/sjc5_/status/1623210443874639873" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Sam Cook's avatar picture" class="avatar__photo" src="/img/avatars/samcook.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Sam Cook</span><small class="quoteSubtitle_SpZV">Gamma.io SWE</small></div></div><small class="quoteText_Z6PS">Kysely is amazing.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/gannonh/status/1653109305368018944" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Gannon Hall's avatar picture" class="avatar__photo" src="/img/avatars/gannon.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Gannon Hall</span><small class="quoteSubtitle_SpZV">Astro Labs Founder</small></div></div><small class="quoteText_Z6PS">Vercel just announced native Postgres support and published Prisma and Kysely templates. I like the DX of Prisma and the type safety of Kysely so I use both via prisma-kysely.</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/solinvictvs/status/1615549659115655169" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Alisson "thelinuxlich" C.Agiani's avatar picture" class="avatar__photo" src="/img/avatars/sommelier.jpeg"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Alisson "thelinuxlich" C.Agiani</span><small class="quoteSubtitle_SpZV">Opensourcerer</small></div></div><small class="quoteText_Z6PS">Kysely is superior and with each release gets even more awesome</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/marvr_/status/1833070144064479434" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Marvin's avatar picture" class="avatar__photo" src="/img/avatars/marvin.png"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Marvin</span><small class="quoteSubtitle_SpZV">Indie Hacker</small></div></div><small class="quoteText_Z6PS">I've been saying it many times already, but it's probably one of the best additions to my tech stack. I enjoy writing SQL since I know Kysely 😆</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a class="quoteContainer_IvTs" href="https://x.com/capajj/status/1824003221397885343" target="_blank"><div class="quoteInnerContainer_TQyv"><img alt="Jiří "Capaj" Špác's avatar picture" class="avatar__photo" src="/img/avatars/capaj.png"><div class="quoteHeader_feMl"><span class="quoteTitle_GIGi">Jiří "Capaj" Špác</span><small class="quoteSubtitle_SpZV">Langtail SWE</small></div></div><small class="quoteText_Z6PS">Kysely is awesome</small><svg class="icon_j1O1 darkIcon_NQbQ" height="271" viewBox="0 0 271 300" width="300" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a></div></div></section><section class="playgroundSection_Li2_"><div class="container playgroundContainer_OoiW"><h1>Try it out for yourself!</h1><p>Modify the query on the left and view the generated SQL on the right.</p><iframe allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" class="playground_Nl1q" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" src="" title="Kysely Demo"></iframe></div></section><section class="examplesCTASection_B3Bk"><div class="examplesCTAContainer_cdXn"><h1>Looking for code examples?</h1><p>From finding a single record to complex joins, our docs have examples to get you started quickly.</p><span class="examplesCTA_Js6o"><a class="button button--primary button--lg" href="/docs/category/examples" style="width:220px">Jump right in</a></span></div></section></main></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/intro">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting-started">Getting started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/playground">Playground</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/migrations">Migrations</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/category/recipes">Recipes</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/category/other-runtimes">Other runtimes</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/dialects">Dialects</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/generating-types">Generating types</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/plugins">Plugin system</a></li></ul></div><div class="col footer__col"><div class="footer__title">Examples</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/category/select">SELECT</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/category/where">WHERE</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/category/join">JOIN</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/category/insert">INSERT</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/category/update">UPDATE</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/category/delete">DELETE</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/category/transactions">Transactions</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/category/cte">CTE</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://discord.gg/xyBJ3GwvAm" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://twitter.com/kysely_" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Other</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/kysely-org/kysely" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://kysely-org.github.io/kysely-apidoc/" target="_blank" rel="noopener noreferrer" class="footer__link-item">API docs<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Sponsors</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://vercel.com/?utm_source=kysely&utm_campaign=oss"><img src="/img/powered-by-vercel.svg" style="width: 214px; height: 44px" alt="Powered by Vercel"></a></li></ul></div></div></div></footer></div> </body> </html>