body{padding-bottom:90px} /* 3-column layout */ .gen-main{max-width:1400px;margin:0 auto;padding:8px 20px 32px;display:grid;grid-template-columns:265px 1fr 290px;gap:18px;position:relative;z-index:1} @media(max-width:1200px){.gen-main{grid-template-columns:255px 1fr}} /* One column: the form is the page, so it comes before presets and preview. */ @media(max-width:960px){.gen-main{grid-template-columns:1fr;max-width:820px;padding:6px 14px 28px}.gen-main>.workflow{order:-1}} .side-panel{padding:0;position:sticky;top:84px;max-height:calc(100vh - 110px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent} .side-panel::-webkit-scrollbar{width:4px} .side-panel::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px} @media(max-width:960px){.side-panel{position:static;max-height:none}} .panel-header{display:flex;align-items:center;gap:8px;padding:16px 18px;border-bottom:1px solid var(--border);font-size:0.72rem;font-weight:800;color:var(--text-dim);letter-spacing:1.2px;text-transform:uppercase} .panel-body{padding:16px 18px} /* Presets */ .preset-btn{display:flex;align-items:center;gap:10px;width:100%;padding:11px 13px;background:var(--glass);border:1px solid var(--border);border-radius:10px;cursor:pointer;font-size:12px;font-weight:600;color:var(--text);transition:all .15s;margin-bottom:7px;font-family:inherit;text-align:left} .preset-btn:hover{border-color:var(--accent);background:rgba(16,185,129,0.08);transform:translateX(2px)} .preset-btn .pic{font-size:16px;flex-shrink:0} .preset-btn.active{border-color:var(--accent);background:rgba(16,185,129,0.12);color:#6ee7b7} .drafts-empty{text-align:center;padding:18px 8px;color:var(--text-muted);font-size:11px;border:1px dashed var(--border);border-radius:8px} .draft-item{padding:10px 12px;background:var(--glass);border:1px solid var(--border);border-radius:8px;margin-bottom:6px;font-size:11px;cursor:pointer;transition:border-color .15s;display:flex;justify-content:space-between;align-items:center;gap:8px} .draft-item:hover{border-color:var(--accent)} .draft-item .d-name{font-weight:600;color:var(--text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .draft-item .d-del{color:var(--text-muted);cursor:pointer;padding:2px 6px;border-radius:4px;font-size:12px} .draft-item .d-del:hover{color:var(--error)} /* Workflow center */ .workflow{display:flex;flex-direction:column;gap:14px} .intro-card{padding:0 2px 2px} .intro-card h1{font-size:clamp(1.4rem,2.4vw,1.9rem);font-weight:800;letter-spacing:-0.02em;margin-bottom:4px;background:var(--grad-text);-webkit-background-clip:text;-webkit-text-fill-color:transparent} .intro-card p{color:var(--text-dim);font-size:13.5px;line-height:1.5} /* Right preview panel */ .preview-header{display:flex;align-items:center;gap:8px;padding:16px 18px;border-bottom:1px solid var(--border);font-size:0.72rem;font-weight:800;color:var(--text-dim);letter-spacing:1.2px;text-transform:uppercase} .prev-section{padding:11px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;font-size:12px} .prev-section:last-child{border-bottom:none} .prev-section .ps-ic{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0;background:var(--glass);color:var(--text-muted);border:1px solid var(--border)} .prev-section.done .ps-ic{background:rgba(16,185,129,0.15);color:var(--accent);border-color:var(--border-accent)} .prev-section span{color:var(--text-dim);flex:1} .prev-section.done span{color:var(--text)} .prev-section .ps-ref{font-size:10px;color:var(--text-muted);white-space:nowrap} /* Result */ #result{display:none;margin-top:24px} .result-tabs{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap} .result-tab{padding:9px 18px;background:var(--glass);border:1px solid var(--border);border-radius:10px;cursor:pointer;font-size:13px;font-weight:600;color:var(--text-dim);transition:all .15s} .result-tab.active{background:rgba(16,185,129,0.12);border-color:var(--accent);color:#6ee7b7} .result-panel{display:none} .result-panel.active{display:block} .policy-output{background:var(--glass);border:1px solid var(--border);border-radius:var(--r-md);padding:26px;max-height:620px;overflow-y:auto} .result-actions{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap} .checklist-grid{display:grid;gap:8px} .checklist-item{display:flex;align-items:center;gap:10px;padding:11px 14px;background:var(--glass);border:1px solid var(--border);border-radius:10px;font-size:13px} .checklist-item .status{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0;font-weight:800} .checklist-item .status.done{background:rgba(16,185,129,0.15);color:var(--accent)} .checklist-item .status.warn{background:rgba(245,158,11,0.12);color:#fbbf24} .checklist-item .section-ref{margin-left:auto;font-size:11px;color:var(--text-muted);white-space:nowrap} /* Loading */ .loading{display:none;text-align:center;padding:40px} .loading.show{display:block} .spinner{width:44px;height:44px;margin:0 auto 14px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite} @keyframes spin{to{transform:rotate(360deg)}} .loading p{color:var(--text-dim);font-size:13px} /* Error */ .error-msg{display:none;background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.3);border-radius:10px;padding:14px 16px;color:#fca5a5;margin-top:14px;font-size:13px} .error-msg.show{display:block} /* Toast */ .toast-local{position:fixed;bottom:90px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--surface);backdrop-filter:blur(20px);border:1px solid var(--border-strong);padding:12px 22px;border-radius:12px;color:var(--text);font-size:13px;font-weight:600;z-index:999;opacity:0;transition:all .3s;pointer-events:none} .toast-local.show{opacity:1;transform:translateX(-50%) translateY(0)} /* CMP-04: collapsed-by-default DPDPA section citation hints */ .dpdpa-hint{margin:2px 0 14px;font-size:11.5px} .dpdpa-hint summary{cursor:pointer;color:var(--accent);font-weight:700;list-style:none;display:inline-flex;align-items:center;gap:5px} .dpdpa-hint summary::-webkit-details-marker{display:none} .dpdpa-hint summary::before{content:'\25B8';display:inline-block;transition:transform .15s} .dpdpa-hint[open] summary::before{transform:rotate(90deg)} .dpdpa-hint .hint-body{margin-top:6px;padding:10px 12px;background:var(--glass);border:1px solid var(--border);border-radius:8px;color:var(--text-dim);line-height:1.55} .dpdpa-hint .hint-body strong{color:var(--text)} /* CMP-02: autosave "Saved" chip */ .autosave-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--accent);opacity:0;transition:opacity .25s;margin-left:10px} .autosave-chip.show{opacity:1} /* CMP-05b: lead email field */ .lead-email-field{margin-top:10px} .lead-email-field .hint{margin-top:4px}

DPDPA Privacy Policy Generator

Fill in your business details to generate a privacy policy compliant with India's Digital Personal Data Protection Act, 2023.

1
Step 1

Business Information

We only use this to send your generated policy and occasional DPDPA compliance tips. No spam.
2
Step 2

Personal Data You Collect

Select all categories your business collects from users.

Why this matters — DPDPA Section 5
Section 5 requires a Data Fiduciary to give a clear, itemised notice of every category of personal data it collects, in plain language, before or at the time of collection. Leaving a category unticked here means it will not appear in your generated notice — the "Data categories documented" compliance-checklist item stays incomplete until at least one is selected.
3
Step 3

Purpose of Data Collection

Why do you collect this data? Under Section 4 & 6 of DPDPA, purposes must be specific.

Why this matters — DPDPA Section 4 & 6
Section 4 permits processing only for a "lawful purpose" the Data Principal has consented to, and Section 6 requires that consent be specific to each stated purpose — a vague "to improve our services" is not enough. Picking at least one purpose here is what completes the "Purpose of data collection specified" checklist item and lets the generator write purpose-specific consent language instead of a generic catch-all.
4
Step 4

Third-Party Data Sharing

Do you share data with any of these third parties?

Why this matters — DPDPA Section 8
Section 8 makes the Data Fiduciary (you) accountable for every processor it shares personal data with, including contractual flow-down of DPDPA obligations. Selecting your real processors here is what completes the "Third-party processors documented" checklist item and generates the disclosure clause naming them.
5
Step 5

Data Retention & Settings

Why this matters — DPDPA Section 8(7), 9 & 16
Retention (Sec 8(7)): personal data may only be kept as long as necessary for the stated purpose, or as required by law — this drives the "Data retention period defined" checklist item. Children's data (Sec 9): processing a child's (under-18) personal data needs verifiable parental consent and a ban on tracking/behavioural advertising to children — toggling this on adds that clause. Cross-border transfer (Sec 16): transferring data outside India is allowed by default except to government-restricted countries, but it must be disclosed.
How long you retain personal data after last interaction (Sec 8(7))
6
Step 6

Data Protection Officer

Contact details for your DPO / grievance officer (recommended by DPDPA Sec 8(8) & 10).

Why this matters — DPDPA Section 8(8), 11–14 & 13
DPO appointed (Sec 8(8)): a named contact who a Data Principal can reach completes that checklist item. Data Principal rights (Chapter III, Sections 11–14): the right to access, correct, erase and nominate is always included in your generated policy regardless of what you fill in here. Grievance redressal (Sec 13): requires a functioning contact channel that responds within a defined period — an empty DPO name/email leaves this checklist item incomplete.

Generating your DPDPA-compliant privacy policy...

Your DPDPA Privacy Policy

English
Hindi
Compliance Checklist