{"id":33,"date":"2026-07-24T21:12:54","date_gmt":"2026-07-24T21:12:54","guid":{"rendered":"https:\/\/noctanotes.com\/?page_id=33"},"modified":"2026-07-24T21:21:58","modified_gmt":"2026-07-24T21:21:58","slug":"home","status":"publish","type":"page","link":"http:\/\/noctanotes.com\/","title":{"rendered":"Home"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"33\" class=\"elementor elementor-33\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7888755 e-flex e-con-boxed e-con e-parent\" data-id=\"7888755\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a87bafe elementor-widget elementor-widget-html\" data-id=\"a87bafe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\" \/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n<title>Noctanotes \u2014 Turn Lecture Audio into Study Notes<\/title>\n<meta name=\"description\" content=\"Noctanotes transcribes your lecture audio with AI and turns it into clean, structured PDF study notes in minutes.\" \/>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Fredoka:wght@500;600;700&display=swap\" rel=\"stylesheet\">\n<style>\n  :root {\n    --ink: #141410;\n    --muted: #6b7268;\n    --border: #e7ece0;\n    --bg: #ffffff;\n    --panel: #f4f9ee;\n    --lime: #c6e755;\n    --lime-dark: #9dc93a;\n    --lime-ink: #33430f;\n  }\n\n  * { box-sizing: border-box; }\n  html { scroll-behavior: smooth; }\n  body {\n    margin: 0;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n    color: var(--ink);\n    background: var(--bg);\n    line-height: 1.5;\n  }\n  a { color: inherit; }\n  img { max-width: 100%; display: block; }\n  h1, h2, .display { font-family: \"Fredoka\", -apple-system, sans-serif; }\n\n  \/* \u2500\u2500 Nav \u2500\u2500 *\/\n  nav {\n    position: relative;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 1.2rem 2.5rem;\n  }\n  .brand { display: flex; align-items: center; gap: 0.5rem; text-decoration: none; }\n  .brand img { height: 26px; }\n  .nav-links {\n    display: flex;\n    align-items: center;\n    gap: 2.25rem;\n    font-size: 0.95rem;\n    font-weight: 600;\n    color: var(--ink);\n  }\n  .nav-links a { text-decoration: none; }\n  .nav-links a:hover { color: var(--lime-ink); }\n  @media (max-width: 820px) { .nav-links { display: none; } }\n\n  .nav-actions { display: flex; align-items: center; gap: 0.6rem; }\n  .nav-btn {\n    font-size: 0.88rem;\n    font-weight: 700;\n    padding: 0.6rem 1.2rem;\n    border-radius: 999px;\n    text-decoration: none;\n    border: none;\n    cursor: pointer;\n    font-family: inherit;\n  }\n  .nav-btn.ghost { background: var(--panel); color: var(--ink); }\n  .nav-btn.ghost.disabled { opacity: 0.55; cursor: not-allowed; }\n  .nav-btn.solid { background: var(--ink); color: #fff; }\n  .nav-btn.solid:hover { background: #2a2a22; }\n\n  \/* \u2500\u2500 Hero \u2500\u2500 *\/\n  .hero {\n    position: relative;\n    overflow: hidden;\n    padding: 3rem 2.5rem 2.5rem;\n  }\n  .hero-blob {\n    position: absolute;\n    top: -25%;\n    left: -20%;\n    width: 70vw;\n    height: 130%;\n    z-index: 0;\n    background:\n      radial-gradient(45% 55% at 20% 30%, rgba(198,231,85,0.85) 0%, rgba(198,231,85,0) 70%),\n      radial-gradient(40% 50% at 45% 45%, rgba(120,230,190,0.65) 0%, rgba(120,230,190,0) 70%),\n      radial-gradient(35% 45% at 15% 65%, rgba(198,231,85,0.55) 0%, rgba(198,231,85,0) 70%);\n    filter: blur(10px);\n  }\n  .hero-inner { position: relative; z-index: 1; max-width: 780px; padding-top: 1.5rem; margin: 0 auto; text-align: center; }\n  .hero h1 {\n    font-size: clamp(2.4rem, 5.5vw, 4.2rem);\n    font-weight: 700;\n    line-height: 1.08;\n    letter-spacing: -0.01em;\n    margin: 0 0 1.5rem;\n  }\n  .hero h1 .accent { color: var(--lime-dark); }\n  .hero p {\n    color: var(--muted);\n    font-size: 1.05rem;\n    max-width: 46ch;\n    margin: 0 auto;\n  }\n\n  \/* \u2500\u2500 Mode tabs (Transcribe audio \/ video) \u2500\u2500 *\/\n  .mode-row {\n    display: flex;\n    justify-content: center;\n    gap: 0.5rem;\n    padding: 2rem 2.5rem 0;\n    flex-wrap: wrap;\n    position: relative;\n    z-index: 1;\n  }\n  .mode-tab {\n    display: flex;\n    align-items: center;\n    gap: 0.5rem;\n    padding: 0.65rem 1.1rem;\n    border-radius: 10px;\n    font-size: 0.92rem;\n    font-weight: 600;\n    color: var(--muted);\n    cursor: pointer;\n    border: 1px solid transparent;\n    background: none;\n    font-family: inherit;\n  }\n  .mode-tab .dot {\n    width: 20px; height: 20px;\n    border-radius: 6px;\n    display: flex; align-items: center; justify-content: center;\n    font-size: 0.8rem;\n  }\n  .mode-tab.active { background: var(--bg); color: var(--ink); border-color: var(--border); box-shadow: 0 1px 3px rgba(0,0,0,0.05); }\n  .mode-tab.disabled { opacity: 0.45; cursor: not-allowed; }\n  .mode-tab.disabled:hover { background: none; }\n\n  \/* \u2500\u2500 Input-method tabs (Upload \/ Record \/ From link) \u2500\u2500 *\/\n  .method-row { display: flex; justify-content: center; padding: 1.25rem 2.5rem 0; }\n  .method-pills {\n    display: inline-flex;\n    background: var(--panel);\n    border: 1px solid var(--border);\n    border-radius: 12px;\n    padding: 4px;\n    gap: 4px;\n  }\n  .method-pill {\n    padding: 0.6rem 1.4rem;\n    border-radius: 9px;\n    font-size: 0.9rem;\n    font-weight: 600;\n    color: var(--muted);\n    cursor: pointer;\n    border: none;\n    background: none;\n    font-family: inherit;\n  }\n  .method-pill.active { background: var(--lime); color: var(--lime-ink); }\n  .method-pill.disabled { opacity: 0.4; cursor: not-allowed; }\n\n  \/* \u2500\u2500 Tool card \u2500\u2500 *\/\n  .tool-shell { padding: 1.5rem 2.5rem 4rem; display: flex; justify-content: center; }\n  .card {\n    position: relative;\n    background: var(--bg);\n    border: 1px solid var(--border);\n    box-shadow: 0 24px 60px rgba(20, 20, 16, 0.08);\n    border-radius: 24px;\n    padding: 3rem 2.5rem;\n    width: 100%;\n    max-width: 640px;\n    margin: 1.5rem auto 0;\n    text-align: center;\n  }\n  .ai-badge {\n    position: absolute;\n    top: 1.5rem; right: 1.75rem;\n    display: flex; align-items: center; gap: 0.35rem;\n    font-size: 0.8rem;\n    font-weight: 700;\n    color: var(--lime-ink);\n  }\n  .ai-badge svg { width: 14px; height: 14px; }\n\n  .icon-strip { display: flex; justify-content: center; gap: 0.6rem; margin-bottom: 1.5rem; }\n  .icon-chip {\n    width: 52px; height: 52px;\n    border-radius: 14px;\n    border: 1px solid var(--border);\n    display: flex; align-items: center; justify-content: center;\n    background: var(--panel);\n  }\n  .icon-chip svg { width: 24px; height: 24px; }\n  .icon-chip.mic { color: var(--lime-ink); }\n  .icon-chip.video { color: var(--lime-ink); }\n  .icon-chip.doc { color: var(--muted); }\n\n  .card h2 { font-size: 1.8rem; font-weight: 700; margin: 0 0 1.5rem; letter-spacing: -0.01em; }\n\n  .drop-zone {\n    border: 2px dashed var(--border);\n    border-radius: 18px;\n    padding: 4rem 1.5rem;\n    min-height: 340px;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    text-align: center;\n    cursor: pointer;\n    transition: border-color 0.2s, background 0.2s;\n    position: relative;\n    background: var(--panel);\n  }\n  .drop-zone:hover, .drop-zone.drag-over { border-color: var(--lime-dark); background: #eef7d8; }\n  .drop-zone input[type=\"file\"] { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; }\n  .drop-icon {\n    width: 84px; height: 84px;\n    border-radius: 20px;\n    background: var(--bg);\n    border: 1px solid var(--border);\n    display: flex; align-items: center; justify-content: center;\n    color: var(--lime-ink);\n    margin-bottom: 1.5rem;\n  }\n  .drop-icon svg { width: 38px; height: 38px; }\n  .drop-label { font-size: 1.05rem; color: var(--muted); }\n  .drop-label strong { color: var(--lime-ink); }\n  .drop-formats { font-size: 0.82rem; color: #9aa294; margin-top: 0.5rem; }\n  .file-selected { font-size: 0.92rem; color: var(--lime-ink); margin-top: 1rem; font-weight: 600; }\n\n  \/* \u2500\u2500 Record panel \u2500\u2500 *\/\n  .record-panel { display: none; text-align: center; }\n  .record-timer { font-size: 2rem; font-weight: 700; font-variant-numeric: tabular-nums; margin: 0.5rem 0 1.5rem; color: var(--ink); font-family: \"Fredoka\", sans-serif; }\n  .record-hint { color: var(--muted); font-size: 0.88rem; margin-bottom: 1.5rem; }\n  .record-btn {\n    display: inline-flex; align-items: center; gap: 0.6rem;\n    padding: 0.9rem 1.8rem;\n    background: var(--ink);\n    color: #fff;\n    font-size: 0.98rem;\n    font-weight: 700;\n    border: none;\n    border-radius: 12px;\n    cursor: pointer;\n    transition: filter 0.2s;\n  }\n  .record-btn:hover { filter: brightness(1.15); }\n  .record-btn.recording { background: #b13030; }\n  .record-btn svg { width: 18px; height: 18px; }\n\n  .field { margin-top: 1.25rem; text-align: left; }\n  label { display: block; font-size: 0.82rem; color: var(--muted); margin-bottom: 0.4rem; }\n  input[type=\"text\"], select {\n    width: 100%;\n    background: var(--panel);\n    border: 1px solid var(--border);\n    border-radius: 10px;\n    padding: 0.65rem 0.9rem;\n    color: var(--ink);\n    font-size: 0.9rem;\n    outline: none;\n    transition: border-color 0.2s;\n  }\n  input[type=\"text\"]:focus, select:focus { border-color: var(--lime-dark); }\n  input::placeholder { color: #a3ab9c; }\n\n  .btn {\n    display: block;\n    width: 100%;\n    margin-top: 1.75rem;\n    padding: 0.9rem;\n    background: var(--ink);\n    color: #fff;\n    font-size: 0.98rem;\n    font-weight: 700;\n    border: none;\n    border-radius: 12px;\n    cursor: pointer;\n    transition: background 0.2s;\n  }\n  .btn:hover { background: #2a2a22; }\n  .btn:disabled { opacity: 0.4; cursor: not-allowed; }\n\n  #progress-panel { display: none; margin-top: 2rem; text-align: left; }\n  .steps { display: flex; flex-direction: column; gap: 0.6rem; }\n  .step {\n    display: flex; align-items: center; gap: 0.85rem;\n    padding: 0.75rem 1rem;\n    border-radius: 10px;\n    background: var(--panel);\n    border: 1px solid var(--border);\n    font-size: 0.88rem;\n    color: var(--muted);\n    transition: all 0.3s;\n  }\n  .step.active { border-color: var(--lime-dark); color: var(--ink); background: #eef7d8; }\n  .step.done   { border-color: #3d8f4f; color: #2f7a3f; background: #e9f6ec; }\n  .step.error  { border-color: #d64545; color: #b13030; background: #fbeaea; }\n  .step-icon { font-size: 1.1rem; width: 1.4rem; text-align: center; }\n\n  .spinner {\n    width: 16px; height: 16px;\n    border: 2px solid var(--lime-dark);\n    border-top-color: transparent;\n    border-radius: 50%;\n    animation: spin 0.7s linear infinite;\n  }\n  @keyframes spin { to { transform: rotate(360deg); } }\n\n  .log-box {\n    margin-top: 1rem;\n    background: var(--panel);\n    border: 1px solid var(--border);\n    border-radius: 8px;\n    padding: 0.75rem 1rem;\n    font-family: monospace;\n    font-size: 0.78rem;\n    color: var(--muted);\n    max-height: 140px;\n    overflow-y: auto;\n  }\n\n  #download-panel { display: none; margin-top: 1.5rem; text-align: left; }\n  .download-title {\n    font-size: 1rem; font-weight: 700; color: #2f7a3f; margin-bottom: 1rem;\n    display: flex; align-items: center; gap: 0.5rem;\n  }\n  .download-buttons { display: flex; gap: 0.75rem; }\n  .dl-btn {\n    flex: 1;\n    padding: 0.75rem;\n    border-radius: 10px;\n    border: 1px solid var(--border);\n    background: var(--panel);\n    color: var(--ink);\n    font-size: 0.88rem;\n    font-weight: 600;\n    cursor: pointer;\n    text-align: center;\n    text-decoration: none;\n    transition: border-color 0.2s, background 0.2s;\n    display: flex; align-items: center; justify-content: center; gap: 0.5rem;\n  }\n  .dl-btn:hover { border-color: var(--lime-dark); background: #eef7d8; }\n  .dl-btn.primary { background: var(--ink); color: #fff; border-color: transparent; }\n  .dl-btn.primary:hover { background: #2a2a22; }\n\n  .reset-btn {\n    display: block; width: 100%; margin-top: 1rem;\n    padding: 0.6rem; background: none; border: 1px solid var(--border);\n    border-radius: 8px; color: var(--muted); font-size: 0.82rem;\n    cursor: pointer; transition: border-color 0.2s, color 0.2s;\n  }\n  .reset-btn:hover { border-color: var(--muted); color: var(--ink); }\n\n  \/* \u2500\u2500 Trust bar \u2500\u2500 *\/\n  .trust-shell { padding: 0 2.5rem 4rem; }\n  .trust-panel {\n    max-width: 1000px;\n    margin: 0 auto;\n    background: var(--panel);\n    border-radius: 20px;\n    padding: 2.5rem;\n    text-align: center;\n  }\n  .trust-panel h2 { font-size: 1.7rem; margin: 0 0 1.75rem; font-weight: 700; }\n  .trust-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 1rem;\n  }\n  @media (max-width: 720px) { .trust-grid { grid-template-columns: 1fr; } }\n  .trust-card {\n    background: var(--bg);\n    border-radius: 14px;\n    padding: 1.5rem 1rem;\n  }\n  .trust-card .name { font-weight: 700; font-size: 1.05rem; margin-bottom: 0.35rem; }\n  .trust-card .desc { color: var(--muted); font-size: 0.85rem; }\n\n  \/* \u2500\u2500 Waitlist modal \u2500\u2500 *\/\n  .modal-overlay {\n    display: none;\n    position: fixed; inset: 0;\n    background: rgba(20, 20, 16, 0.35);\n    backdrop-filter: blur(4px);\n    z-index: 50;\n    align-items: center;\n    justify-content: center;\n    padding: 1.5rem;\n  }\n  .modal-overlay.open { display: flex; }\n  .modal-card {\n    background: var(--bg);\n    border-radius: 20px;\n    max-width: 620px;\n    width: 100%;\n    padding: 2.5rem;\n    box-shadow: 0 30px 80px rgba(20,20,16,0.25);\n    display: grid;\n    grid-template-columns: auto 1fr;\n    gap: 2rem;\n    align-items: center;\n  }\n  @media (max-width: 620px) { .modal-card { grid-template-columns: 1fr; text-align: center; } }\n  .modal-art {\n    width: 120px; height: 120px;\n    border-radius: 50%;\n    background: var(--panel);\n    display: flex; align-items: center; justify-content: center;\n    justify-self: center;\n  }\n  .modal-art svg { width: 48px; height: 48px; color: var(--lime-ink); }\n  .modal-badge {\n    display: inline-block;\n    background: var(--ink);\n    color: #fff;\n    font-size: 0.72rem;\n    font-weight: 700;\n    letter-spacing: 0.05em;\n    text-transform: uppercase;\n    padding: 0.3rem 0.7rem;\n    border-radius: 6px;\n    margin-bottom: 0.9rem;\n  }\n  .modal-card h3 { font-size: 1.5rem; font-weight: 700; margin: 0 0 0.6rem; }\n  .modal-card p { color: var(--muted); font-size: 0.94rem; margin: 0 0 1.25rem; }\n  .modal-form { display: flex; gap: 0.6rem; }\n  @media (max-width: 480px) { .modal-form { flex-direction: column; } }\n  .modal-form input {\n    flex: 1;\n    background: var(--panel);\n    border: 1px solid var(--border);\n    border-radius: 10px;\n    padding: 0.7rem 1rem;\n    font-size: 0.92rem;\n    color: var(--ink);\n    outline: none;\n  }\n  .modal-form input:focus { border-color: var(--lime-dark); }\n  .modal-form button {\n    background: var(--ink);\n    color: #fff;\n    border: none;\n    border-radius: 10px;\n    padding: 0.7rem 1.3rem;\n    font-weight: 700;\n    font-size: 0.92rem;\n    cursor: pointer;\n    white-space: nowrap;\n  }\n  .modal-form button:hover { background: #2a2a22; }\n  .modal-status { margin-top: 0.75rem; font-size: 0.85rem; color: var(--lime-ink); font-weight: 600; }\n  .modal-dismiss {\n    display: block;\n    margin-top: 1rem;\n    background: none;\n    border: none;\n    color: var(--muted);\n    font-size: 0.85rem;\n    cursor: pointer;\n    text-decoration: underline;\n    padding: 0;\n  }\n\n  \/* \u2500\u2500 Tool grid \u2500\u2500 *\/\n  .section { padding: 3rem 2.5rem; }\n  .section h2 { text-align: center; font-size: clamp(1.5rem, 3vw, 2rem); margin: 0 0 2.25rem; font-weight: 700; letter-spacing: -0.01em; }\n\n  .tool-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 1.25rem;\n    max-width: 1000px;\n    margin: 0 auto;\n  }\n  @media (max-width: 860px) { .tool-grid { grid-template-columns: 1fr 1fr; } }\n  @media (max-width: 560px) { .tool-grid { grid-template-columns: 1fr; } }\n\n  .tool-card {\n    background: var(--bg);\n    border: 1px solid var(--border);\n    border-radius: 16px;\n    overflow: hidden;\n  }\n  .tool-card .label { padding: 1rem 1.1rem 0.85rem; font-weight: 600; font-size: 0.95rem; }\n  .tool-card .art {\n    margin: 0 1.1rem 1.1rem;\n    background: var(--panel);\n    border-radius: 10px;\n    height: 90px;\n    display: flex; align-items: center; justify-content: center;\n    color: var(--lime-ink);\n  }\n  .tool-card .art svg { width: 30px; height: 30px; }\n\n  \/* \u2500\u2500 FAQ \u2500\u2500 *\/\n  .faq-section { background: var(--bg); padding: 3.5rem 2.5rem; }\n  .faq { max-width: 900px; margin: 0 auto; }\n  details {\n    border-bottom: 1px solid var(--border);\n    padding: 1.2rem 0;\n  }\n  summary {\n    cursor: pointer;\n    font-weight: 500;\n    font-size: 1.02rem;\n    list-style: none;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  summary::-webkit-details-marker { display: none; }\n  summary::after {\n    content: \"+\";\n    font-size: 1.3rem;\n    color: var(--muted);\n    font-weight: 300;\n    margin-left: 1rem;\n  }\n  details[open] summary::after { content: \"\\2212\"; }\n  details p { color: var(--muted); font-size: 0.92rem; margin: 0.85rem 0 0; }\n\n  \/* \u2500\u2500 Footer \u2500\u2500 *\/\n  footer {\n    border-top: 1px solid var(--border);\n    padding: 2rem 2.5rem;\n    text-align: center;\n    color: var(--muted);\n    font-size: 0.85rem;\n  }\n<\/style>\n<\/head>\n<body>\n\n<nav>\n  <a class=\"brand\" href=\"\/\">\n    <img decoding=\"async\" src=\"\/static\/logo.png\" alt=\"Noctanotes\">\n  <\/a>\n  <div class=\"nav-links\">\n    <a href=\"#tool\">Transcribe<\/a>\n    <a href=\"#features\">Features<\/a>\n    <a href=\"#faq\">FAQ<\/a>\n  <\/div>\n  <div class=\"nav-actions\">\n    <button class=\"nav-btn ghost disabled\" type=\"button\" title=\"Accounts aren't available yet\">Login<\/button>\n    <a class=\"nav-btn solid\" href=\"#tool\">Try for free<\/a>\n  <\/div>\n<\/nav>\n\n<section class=\"hero\">\n  <div class=\"hero-blob\" aria-hidden=\"true\"><\/div>\n  <div class=\"hero-inner\">\n    <h1>Turn Lecture Audio Into<br>Structured Study <span class=\"accent\">Notes<\/span><\/h1>\n    <p>Upload a recording \u2014 Noctanotes transcribes it with Whisper and uses Claude to write clean, organized notes, ready to study from in minutes.<\/p>\n  <\/div>\n<\/section>\n\n<!-- Transcribe-mode tabs -->\n<div class=\"mode-row\">\n  <button class=\"mode-tab active\" id=\"mode-audio\" type=\"button\">\n    <span class=\"dot\">\ud83c\udf99\ufe0f<\/span> Transcribe audio\n  <\/button>\n  <button class=\"mode-tab\" id=\"mode-video\" type=\"button\">\n    <span class=\"dot\">\u25b6\ufe0f<\/span> Transcribe video\n  <\/button>\n  <button class=\"mode-tab disabled\" type=\"button\" title=\"Coming soon\">\n    <span class=\"dot\">\ud83d\udcc4<\/span> Transcribe document\n  <\/button>\n<\/div>\n\n<!-- Upload \/ Record \/ From-link tabs -->\n<div class=\"method-row\">\n  <div class=\"method-pills\">\n    <button class=\"method-pill active\" id=\"method-upload\" type=\"button\">Upload<\/button>\n    <button class=\"method-pill\" id=\"method-record\" type=\"button\">Record<\/button>\n    <button class=\"method-pill disabled\" type=\"button\" title=\"Coming soon\">From link<\/button>\n  <\/div>\n<\/div>\n\n<section class=\"tool-shell\" id=\"tool\">\n  <div class=\"card\">\n    <div class=\"ai-badge\">\n      <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2l1.8 5.4L19 9l-5.2 1.6L12 16l-1.8-5.4L5 9l5.2-1.6z\"\/><\/svg>\n      AI powered\n    <\/div>\n\n    <div class=\"icon-strip\">\n      <div class=\"icon-chip mic\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 15a3 3 0 0 0 3-3V6a3 3 0 0 0-6 0v6a3 3 0 0 0 3 3Z\"\/><path d=\"M19 11a7 7 0 0 1-14 0\"\/><path d=\"M12 18v3\"\/><\/svg>\n      <\/div>\n      <div class=\"icon-chip video\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M23 7l-7 5 7 5V7z\"\/><rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\"\/><\/svg>\n      <\/div>\n      <div class=\"icon-chip doc\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><path d=\"M14 2v6h6\"\/><path d=\"M9 13h6M9 17h6\"\/><\/svg>\n      <\/div>\n    <\/div>\n\n    <h2 id=\"card-heading\">Turn lecture audio into study notes<\/h2>\n\n    <!-- Upload -->\n    <div id=\"upload-form\">\n      <div class=\"drop-zone\" id=\"drop-zone\">\n        <input type=\"file\" id=\"audio-input\" accept=\".mp3,.mp4,.m4a,.wav,.webm,.ogg\" \/>\n        <div class=\"drop-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 15a3 3 0 0 0 3-3V6a3 3 0 0 0-6 0v6a3 3 0 0 0 3 3Z\"\/><path d=\"M19 11a7 7 0 0 1-14 0\"\/><path d=\"M12 18v3\"\/><\/svg>\n        <\/div>\n        <div class=\"drop-label\"><strong>Click to upload<\/strong> or drag and drop<\/div>\n        <div class=\"drop-formats\" id=\"drop-formats\">MP3 \u00b7 M4A \u00b7 WAV \u00b7 WEBM \u00b7 OGG \u2014 up to 500 MB<\/div>\n        <div class=\"file-selected\" id=\"file-name\"><\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Record -->\n    <div class=\"record-panel\" id=\"record-panel\">\n      <div class=\"record-timer\" id=\"record-timer\">00:00<\/div>\n      <div class=\"record-hint\" id=\"record-hint\">Uses your browser microphone \u2014 nothing is uploaded until you press stop.<\/div>\n      <button class=\"record-btn\" id=\"record-btn\" type=\"button\">\n        <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><circle cx=\"12\" cy=\"12\" r=\"8\"\/><\/svg>\n        Start recording\n      <\/button>\n      <div class=\"file-selected\" id=\"record-file-name\"><\/div>\n    <\/div>\n\n    <div class=\"field\">\n      <label for=\"title-input\">Lecture title <span style=\"color:#a3ab9c\">(optional \u2014 auto-detected if blank)<\/span><\/label>\n      <input type=\"text\" id=\"title-input\" placeholder=\"e.g. Management Finance \u2014 Capital Structure\" \/>\n    <\/div>\n\n    <div class=\"field\">\n      <label for=\"language-select\">Language<\/label>\n      <select id=\"language-select\">\n        <option value=\"\">Auto-detect<\/option>\n        <option value=\"en\">English<\/option>\n        <option value=\"af\">Afrikaans<\/option>\n        <option value=\"fr\">French<\/option>\n        <option value=\"de\">German<\/option>\n        <option value=\"es\">Spanish<\/option>\n        <option value=\"zu\">Zulu<\/option>\n        <option value=\"xh\">Xhosa<\/option>\n      <\/select>\n    <\/div>\n\n    <button class=\"btn\" id=\"process-btn\" disabled>Generate Study Notes<\/button>\n\n    <!-- Progress -->\n    <div id=\"progress-panel\">\n      <div class=\"steps\">\n        <div class=\"step\" id=\"step-1\">\n          <span class=\"step-icon\" id=\"icon-1\">\u23f3<\/span>\n          <span>Transcribing audio with Whisper<\/span>\n        <\/div>\n        <div class=\"step\" id=\"step-2\">\n          <span class=\"step-icon\" id=\"icon-2\">\u23f3<\/span>\n          <span>Generating study notes with Claude<\/span>\n        <\/div>\n        <div class=\"step\" id=\"step-3\">\n          <span class=\"step-icon\" id=\"icon-3\">\u23f3<\/span>\n          <span>Rendering PDF<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"log-box\" id=\"log-box\"><\/div>\n    <\/div>\n\n    <!-- Downloads -->\n    <div id=\"download-panel\">\n      <div class=\"download-title\">\u2705 Study notes ready!<\/div>\n      <div class=\"download-buttons\">\n        <a class=\"dl-btn primary\" id=\"dl-pdf\" href=\"#\">\ud83d\udcd1 Download PDF<\/a>\n        <a class=\"dl-btn\" id=\"dl-html\" href=\"#\">\ud83c\udf10 Download HTML<\/a>\n      <\/div>\n      <button class=\"reset-btn\" id=\"reset-btn\">Process another lecture \u2192<\/button>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Trust bar: honest substitute for fabricated stats \u2014 real technology credentials -->\n<section class=\"trust-shell\">\n  <div class=\"trust-panel\">\n    <h2>Built on proven AI<\/h2>\n    <div class=\"trust-grid\">\n      <div class=\"trust-card\">\n        <div class=\"name\">OpenAI Whisper<\/div>\n        <div class=\"desc\">Speech-to-text transcription<\/div>\n      <\/div>\n      <div class=\"trust-card\">\n        <div class=\"name\">Anthropic Claude<\/div>\n        <div class=\"desc\">Structures notes into headings &amp; key terms<\/div>\n      <\/div>\n      <div class=\"trust-card\">\n        <div class=\"name\">WeasyPrint<\/div>\n        <div class=\"desc\">Clean, print-ready PDF export<\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"section\" id=\"features\">\n  <h2>What Noctanotes gives you<\/h2>\n  <div class=\"tool-grid\">\n    <div class=\"tool-card\">\n      <div class=\"label\">Accurate transcription<\/div>\n      <div class=\"art\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 15a3 3 0 0 0 3-3V6a3 3 0 0 0-6 0v6a3 3 0 0 0 3 3Z\"\/><path d=\"M19 11a7 7 0 0 1-14 0\"\/><path d=\"M12 18v3\"\/><\/svg>\n      <\/div>\n    <\/div>\n    <div class=\"tool-card\">\n      <div class=\"label\">Video file support<\/div>\n      <div class=\"art\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M23 7l-7 5 7 5V7z\"\/><rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\"\/><\/svg>\n      <\/div>\n    <\/div>\n    <div class=\"tool-card\">\n      <div class=\"label\">Structured study notes<\/div>\n      <div class=\"art\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><path d=\"M14 2v6h6\"\/><path d=\"M9 13h6M9 17h6\"\/><\/svg>\n      <\/div>\n    <\/div>\n    <div class=\"tool-card\">\n      <div class=\"label\">PDF &amp; HTML export<\/div>\n      <div class=\"art\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 3v12\"\/><path d=\"m7 10 5 5 5-5\"\/><path d=\"M5 21h14\"\/><\/svg>\n      <\/div>\n    <\/div>\n    <div class=\"tool-card\">\n      <div class=\"label\">Multi-language<\/div>\n      <div class=\"art\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M3 12h18M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z\"\/><\/svg>\n      <\/div>\n    <\/div>\n    <div class=\"tool-card\">\n      <div class=\"label\">Handles multi-hour recordings<\/div>\n      <div class=\"art\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 7v5l3 3\"\/><\/svg>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"faq-section\" id=\"faq\">\n  <div class=\"faq\">\n    <h2 style=\"text-align:center; margin-bottom:2rem;\">Frequently Asked Questions<\/h2>\n    <details open>\n      <summary>What file formats does Noctanotes support?<\/summary>\n      <p>MP3, MP4, M4A, WAV, WEBM, and OGG, up to 500&nbsp;MB per file.<\/p>\n    <\/details>\n    <details>\n      <summary>How long can my recording be?<\/summary>\n      <p>Long recordings are automatically split into chunks during transcription, so multi-hour lectures work fine.<\/p>\n    <\/details>\n    <details>\n      <summary>Which languages are supported?<\/summary>\n      <p>Noctanotes can auto-detect the spoken language, or you can specify one \u2014 including English, Afrikaans, French, German, Spanish, Zulu, and Xhosa.<\/p>\n    <\/details>\n    <details>\n      <summary>Can I record directly instead of uploading a file?<\/summary>\n      <p>Yes \u2014 switch to the \"Record\" tab to capture audio from your microphone right in the browser, then generate notes from it the same way.<\/p>\n    <\/details>\n    <details>\n      <summary>What do I get back?<\/summary>\n      <p>A structured PDF (and the underlying HTML) with headings, key terms, and takeaways drawn from your recording \u2014 not just a raw transcript.<\/p>\n    <\/details>\n  <\/div>\n<\/section>\n\n<footer>&copy; 2026 Noctanotes. All rights reserved.<\/footer>\n\n<!-- Waitlist modal \u2014 honest: no fake pricing or payment fields, just an early-access signal -->\n<div class=\"modal-overlay\" id=\"waitlist-overlay\">\n  <div class=\"modal-card\">\n    <div class=\"modal-art\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 2l1.8 5.4L19 9l-5.2 1.6L12 16l-1.8-5.4L5 9l5.2-1.6z\"\/><\/svg>\n    <\/div>\n    <div>\n      <span class=\"modal-badge\">Coming soon<\/span>\n      <h3>More features are on the way<\/h3>\n      <p>Your study notes are ready. We're also building accounts, note history, and other premium features \u2014 want early access when they ship?<\/p>\n      <form class=\"modal-form\" id=\"waitlist-form\">\n        <input type=\"email\" id=\"waitlist-email\" placeholder=\"you@example.com\" required \/>\n        <button type=\"submit\">Join waitlist<\/button>\n      <\/form>\n      <div class=\"modal-status\" id=\"waitlist-status\"><\/div>\n      <button class=\"modal-dismiss\" id=\"waitlist-dismiss\" type=\"button\">Maybe later<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n  const dropZone     = document.getElementById('drop-zone');\n  const audioInput   = document.getElementById('audio-input');\n  const fileNameEl   = document.getElementById('file-name');\n  const processBtn   = document.getElementById('process-btn');\n  const titleInput   = document.getElementById('title-input');\n  const langSelect   = document.getElementById('language-select');\n  const cardHeading  = document.getElementById('card-heading');\n  const dropFormats  = document.getElementById('drop-formats');\n\n  let selectedFile = null;\n  let currentJobId = null;\n\n  \/* \u2500\u2500 Transcribe-mode tabs (audio \/ video) \u2014 same pipeline, different accept filter \u2500\u2500 *\/\n  const modeAudio = document.getElementById('mode-audio');\n  const modeVideo = document.getElementById('mode-video');\n  modeAudio.addEventListener('click', () => {\n    modeAudio.classList.add('active');\n    modeVideo.classList.remove('active');\n    audioInput.accept = '.mp3,.m4a,.wav,.webm,.ogg';\n    dropFormats.textContent = 'MP3 \u00b7 M4A \u00b7 WAV \u00b7 WEBM \u00b7 OGG \u2014 up to 500 MB';\n    cardHeading.textContent = 'Turn lecture audio into study notes';\n  });\n  modeVideo.addEventListener('click', () => {\n    modeVideo.classList.add('active');\n    modeAudio.classList.remove('active');\n    audioInput.accept = '.mp4,.webm';\n    dropFormats.textContent = 'MP4 \u00b7 WEBM \u2014 up to 500 MB';\n    cardHeading.textContent = 'Turn lecture video into study notes';\n  });\n\n  \/* \u2500\u2500 Upload \/ Record method tabs \u2500\u2500 *\/\n  const methodUpload = document.getElementById('method-upload');\n  const methodRecord = document.getElementById('method-record');\n  const uploadForm   = document.getElementById('upload-form');\n  const recordPanel  = document.getElementById('record-panel');\n\n  methodUpload.addEventListener('click', () => {\n    methodUpload.classList.add('active');\n    methodRecord.classList.remove('active');\n    uploadForm.style.display = 'block';\n    recordPanel.style.display = 'none';\n  });\n  methodRecord.addEventListener('click', () => {\n    methodRecord.classList.add('active');\n    methodUpload.classList.remove('active');\n    uploadForm.style.display = 'none';\n    recordPanel.style.display = 'block';\n  });\n\n  \/* \u2500\u2500 Drag-and-drop upload \u2500\u2500 *\/\n  dropZone.addEventListener('dragover', e => { e.preventDefault(); dropZone.classList.add('drag-over'); });\n  dropZone.addEventListener('dragleave', () => dropZone.classList.remove('drag-over'));\n  dropZone.addEventListener('drop', e => {\n    e.preventDefault();\n    dropZone.classList.remove('drag-over');\n    if (e.dataTransfer.files[0]) setFile(e.dataTransfer.files[0]);\n  });\n  audioInput.addEventListener('change', () => { if (audioInput.files[0]) setFile(audioInput.files[0]); });\n\n  function setFile(file) {\n    selectedFile = file;\n    fileNameEl.textContent = `\u2714 ${file.name}  (${(file.size \/ 1024 \/ 1024).toFixed(1)} MB)`;\n    processBtn.disabled = false;\n  }\n\n  \/* \u2500\u2500 Browser microphone recording \u2500\u2500 *\/\n  const recordBtn      = document.getElementById('record-btn');\n  const recordTimer     = document.getElementById('record-timer');\n  const recordHint      = document.getElementById('record-hint');\n  const recordFileName  = document.getElementById('record-file-name');\n\n  let mediaRecorder = null;\n  let recordedChunks = [];\n  let recordTimerHandle = null;\n  let recordSeconds = 0;\n\n  recordBtn.addEventListener('click', async () => {\n    if (mediaRecorder && mediaRecorder.state === 'recording') {\n      mediaRecorder.stop();\n      return;\n    }\n    try {\n      const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n      recordedChunks = [];\n      mediaRecorder = new MediaRecorder(stream);\n      mediaRecorder.ondataavailable = e => { if (e.data.size > 0) recordedChunks.push(e.data); };\n      mediaRecorder.onstop = () => {\n        stream.getTracks().forEach(t => t.stop());\n        clearInterval(recordTimerHandle);\n        const blob = new Blob(recordedChunks, { type: 'audio\/webm' });\n        const file = new File([blob], `recording-${Date.now()}.webm`, { type: 'audio\/webm' });\n        setFile(file);\n        recordFileName.textContent = `\u2714 Recorded ${recordSeconds}s clip \u2014 ready to process`;\n        recordBtn.classList.remove('recording');\n        recordBtn.innerHTML = '<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><circle cx=\"12\" cy=\"12\" r=\"8\"\/><\/svg> Record again';\n        recordHint.textContent = 'Recording captured \u2014 fill in the details below and generate your notes.';\n      };\n      mediaRecorder.start();\n      recordSeconds = 0;\n      recordTimer.textContent = '00:00';\n      recordBtn.classList.add('recording');\n      recordBtn.innerHTML = '<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\"\/><\/svg> Stop recording';\n      recordHint.textContent = 'Recording \u2014 press stop when you\\'re done.';\n      recordTimerHandle = setInterval(() => {\n        recordSeconds++;\n        const m = String(Math.floor(recordSeconds \/ 60)).padStart(2, '0');\n        const s = String(recordSeconds % 60).padStart(2, '0');\n        recordTimer.textContent = `${m}:${s}`;\n      }, 1000);\n    } catch (err) {\n      recordHint.textContent = 'Microphone access was denied or is unavailable in this browser.';\n    }\n  });\n\n  \/* \u2500\u2500 Submit \u2500\u2500 *\/\n  processBtn.addEventListener('click', async () => {\n    if (!selectedFile) return;\n\n    const formData = new FormData();\n    formData.append('audio', selectedFile);\n    formData.append('title', titleInput.value.trim());\n    formData.append('language', langSelect.value);\n\n    document.getElementById('upload-form').style.display = 'none';\n    document.getElementById('record-panel').style.display = 'none';\n    document.querySelector('.method-row').style.display = 'none';\n    document.querySelector('.mode-row').style.display = 'none';\n    document.getElementById('progress-panel').style.display = 'block';\n\n    const res = await fetch('\/process', { method: 'POST', body: formData });\n    const { job_id, error } = await res.json();\n\n    if (error) { showError(error); return; }\n    currentJobId = job_id;\n    streamProgress(job_id);\n  });\n\n  function streamProgress(jobId) {\n    const es = new EventSource(`\/progress\/${jobId}`);\n    const log = document.getElementById('log-box');\n\n    es.onmessage = e => {\n      const msg = e.data;\n\n      if (msg === '__PING__') return;\n\n      const line = document.createElement('div');\n      line.textContent = msg;\n      log.appendChild(line);\n      log.scrollTop = log.scrollHeight;\n\n      if (msg.includes('[1\/3]')) setStep(1, 'active');\n      if (msg.includes('Transcription complete')) setStep(1, 'done');\n      if (msg.includes('[2\/3]')) setStep(2, 'active');\n      if (msg.includes('HTML saved')) setStep(2, 'done');\n      if (msg.includes('[3\/3]')) setStep(3, 'active');\n      if (msg.includes('PDF saved')) setStep(3, 'done');\n\n      if (msg === '__DONE__') {\n        es.close();\n        showDownloads(jobId);\n      }\n      if (msg.startsWith('__ERROR__')) {\n        es.close();\n        showError(msg.replace('__ERROR__ ', ''));\n      }\n    };\n  }\n\n  function setStep(n, state) {\n    const step = document.getElementById(`step-${n}`);\n    const icon = document.getElementById(`icon-${n}`);\n    step.className = `step ${state}`;\n    if (state === 'active') {\n      const spinner = document.createElement('div');\n      spinner.className = 'spinner';\n      icon.replaceWith(spinner);\n      spinner.id = `icon-${n}`;\n    } else if (state === 'done') {\n      icon.textContent = '\u2714';\n    } else if (state === 'error') {\n      icon.textContent = '\u2716';\n    }\n  }\n\n  function showDownloads(jobId) {\n    document.getElementById('download-panel').style.display = 'block';\n    document.getElementById('dl-pdf').href  = `\/download\/${jobId}\/pdf`;\n    document.getElementById('dl-html').href = `\/download\/${jobId}\/html`;\n    setTimeout(() => waitlistOverlay.classList.add('open'), 600);\n  }\n\n  \/* \u2500\u2500 Waitlist modal \u2500\u2500 *\/\n  const waitlistOverlay = document.getElementById('waitlist-overlay');\n  const waitlistForm     = document.getElementById('waitlist-form');\n  const waitlistEmail    = document.getElementById('waitlist-email');\n  const waitlistStatus   = document.getElementById('waitlist-status');\n  const waitlistDismiss  = document.getElementById('waitlist-dismiss');\n\n  waitlistDismiss.addEventListener('click', () => waitlistOverlay.classList.remove('open'));\n  waitlistOverlay.addEventListener('click', e => { if (e.target === waitlistOverlay) waitlistOverlay.classList.remove('open'); });\n\n  waitlistForm.addEventListener('submit', async e => {\n    e.preventDefault();\n    const email = waitlistEmail.value.trim();\n    if (!email) return;\n    try {\n      const res = await fetch('\/waitlist', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application\/json' },\n        body: JSON.stringify({ email }),\n      });\n      if (!res.ok) throw new Error();\n      waitlistStatus.textContent = \"You're on the list \u2014 we'll email you.\";\n      waitlistForm.style.display = 'none';\n    } catch {\n      waitlistStatus.textContent = 'Something went wrong \u2014 please try again.';\n    }\n  });\n\n  function showError(msg) {\n    setStep(1, 'error'); setStep(2, 'error'); setStep(3, 'error');\n    const log = document.getElementById('log-box');\n    const line = document.createElement('div');\n    line.style.color = '#b13030';\n    line.textContent = `Error: ${msg}`;\n    log.appendChild(line);\n  }\n\n  document.getElementById('reset-btn').addEventListener('click', () => {\n    selectedFile = null;\n    currentJobId = null;\n    fileNameEl.textContent = '';\n    recordFileName.textContent = '';\n    titleInput.value = '';\n    langSelect.value = '';\n    processBtn.disabled = true;\n    audioInput.value = '';\n    document.getElementById('log-box').innerHTML = '';\n    document.querySelector('.method-row').style.display = 'flex';\n    document.querySelector('.mode-row').style.display = 'flex';\n    document.getElementById('upload-form').style.display = methodUpload.classList.contains('active') ? 'block' : 'none';\n    document.getElementById('record-panel').style.display = methodRecord.classList.contains('active') ? 'block' : 'none';\n    document.getElementById('progress-panel').style.display = 'none';\n    document.getElementById('download-panel').style.display = 'none';\n    [1,2,3].forEach(n => setStep(n, ''));\n  });\n<\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Noctanotes \u2014 Turn Lecture Audio into Study Notes Transcribe Features FAQ Login Try for free Turn Lecture Audio IntoStructured Study Notes Upload a recording \u2014 Noctanotes transcribes it with Whisper and uses Claude to write clean, organized notes, ready to study from in minutes. \ud83c\udf99\ufe0f Transcribe audio \u25b6\ufe0f Transcribe video \ud83d\udcc4 Transcribe document Upload Record [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-33","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Home -<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/noctanotes.com\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Home -\" \/>\n<meta property=\"og:description\" content=\"Noctanotes \u2014 Turn Lecture Audio into Study Notes Transcribe Features FAQ Login Try for free Turn Lecture Audio IntoStructured Study Notes Upload a recording \u2014 Noctanotes transcribes it with Whisper and uses Claude to write clean, organized notes, ready to study from in minutes. \ud83c\udf99\ufe0f Transcribe audio \u25b6\ufe0f Transcribe video \ud83d\udcc4 Transcribe document Upload Record [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/noctanotes.com\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-24T21:21:58+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/noctanotes.com\\\/\",\"url\":\"https:\\\/\\\/noctanotes.com\\\/\",\"name\":\"Home -\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/noctanotes.com\\\/#website\"},\"datePublished\":\"2026-07-24T21:12:54+00:00\",\"dateModified\":\"2026-07-24T21:21:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/noctanotes.com\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/noctanotes.com\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/noctanotes.com\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/noctanotes.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Home\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/noctanotes.com\\\/#website\",\"url\":\"http:\\\/\\\/noctanotes.com\\\/\",\"name\":\"\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/noctanotes.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Home -","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/noctanotes.com\/","og_locale":"en_US","og_type":"article","og_title":"Home -","og_description":"Noctanotes \u2014 Turn Lecture Audio into Study Notes Transcribe Features FAQ Login Try for free Turn Lecture Audio IntoStructured Study Notes Upload a recording \u2014 Noctanotes transcribes it with Whisper and uses Claude to write clean, organized notes, ready to study from in minutes. \ud83c\udf99\ufe0f Transcribe audio \u25b6\ufe0f Transcribe video \ud83d\udcc4 Transcribe document Upload Record [&hellip;]","og_url":"https:\/\/noctanotes.com\/","article_modified_time":"2026-07-24T21:21:58+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/noctanotes.com\/","url":"https:\/\/noctanotes.com\/","name":"Home -","isPartOf":{"@id":"http:\/\/noctanotes.com\/#website"},"datePublished":"2026-07-24T21:12:54+00:00","dateModified":"2026-07-24T21:21:58+00:00","breadcrumb":{"@id":"https:\/\/noctanotes.com\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/noctanotes.com\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/noctanotes.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/noctanotes.com\/"},{"@type":"ListItem","position":2,"name":"Home"}]},{"@type":"WebSite","@id":"http:\/\/noctanotes.com\/#website","url":"http:\/\/noctanotes.com\/","name":"","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/noctanotes.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"http:\/\/noctanotes.com\/index.php?rest_route=\/wp\/v2\/pages\/33","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/noctanotes.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/noctanotes.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/noctanotes.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/noctanotes.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=33"}],"version-history":[{"count":4,"href":"http:\/\/noctanotes.com\/index.php?rest_route=\/wp\/v2\/pages\/33\/revisions"}],"predecessor-version":[{"id":37,"href":"http:\/\/noctanotes.com\/index.php?rest_route=\/wp\/v2\/pages\/33\/revisions\/37"}],"wp:attachment":[{"href":"http:\/\/noctanotes.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}