ER Diagram Generator
Create entity-relationship diagrams for database design
Style
Display Options
Theme
Colors
Entities
Relationships
→
→
→
Preview
users
PKidINT
usernameVARCHAR(50)
emailVARCHAR(100)
created_atTIMESTAMP
posts
PKidINT
FKuser_idINT
titleVARCHAR(200)
contentTEXT
created_atTIMESTAMP
comments
PKidINT
FKpost_idINT
FKuser_idINT
contentTEXT
created_atTIMESTAMP
Export
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ER Diagram</title>
<style>
.er-diagram {
position: relative;
width: 800px;
height: 600px;
background-color: #1e3a5f;
border-radius: 8px;
overflow: hidden;
font-family: system-ui, sans-serif;
}
.er-entity {
position: absolute;
background-color: #ffffff;
border: 2px solid #2563eb;
border-radius: 4px;
overflow: hidden;
box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}
.entity-header {
padding: 8px 12px;
background-color: #3b82f6;
color: #ffffff;
font-weight: 600;
font-size: 14px;
text-transform: uppercase;
}
.entity-attributes {
padding: 4px 0;
}
.attribute-row {
display: flex;
align-items: center;
padding: 4px 12px;
font-size: 12px;
color: #1e293b;
gap: 8px;
}
.attribute-row:hover {
background-color: rgba(0,0,0,0.05);
}
.attr-keys {
min-width: 40px;
display: flex;
gap: 4px;
}
.key-badge {
font-size: 9px;
font-weight: 700;
}
.key-badge.pk {
color: #eab308;
}
.key-badge.fk {
color: #22c55e;
}
.attr-name {
flex: 1;
font-weight: 500;
}
.attr-type {
color: #64748b;
font-size: 11px;
}
.relationship-line {
stroke: #60a5fa;
stroke-width: 2;
fill: none;
}
</style>
</head>
<body>
<div class="er-diagram">
<svg width="100%" height="100%" style="position: absolute; top: 0; left: 0;">
<!-- Relationships would be rendered here -->
</svg>
<div class="er-entity" style="left: 100px; top: 100px; width: 180px;">
<div class="entity-header">users</div>
<div class="entity-attributes">
<div class="attribute-row">
<span class="attr-keys"><span class="key-badge pk">PK</span></span>
<span class="attr-name">id</span>
<span class="attr-type">INT</span>
</div>
<div class="attribute-row">
<span class="attr-keys"></span>
<span class="attr-name">username</span>
<span class="attr-type">VARCHAR(50)</span>
</div>
<div class="attribute-row">
<span class="attr-keys"></span>
<span class="attr-name">email</span>
<span class="attr-type">VARCHAR(100)</span>
</div>
<div class="attribute-row">
<span class="attr-keys"></span>
<span class="attr-name">created_at</span>
<span class="attr-type">TIMESTAMP</span>
</div>
</div>
</div>
<div class="er-entity" style="left: 400px; top: 100px; width: 180px;">
<div class="entity-header">posts</div>
<div class="entity-attributes">
<div class="attribute-row">
<span class="attr-keys"><span class="key-badge pk">PK</span></span>
<span class="attr-name">id</span>
<span class="attr-type">INT</span>
</div>
<div class="attribute-row">
<span class="attr-keys"><span class="key-badge fk">FK</span></span>
<span class="attr-name">user_id</span>
<span class="attr-type">INT</span>
</div>
<div class="attribute-row">
<span class="attr-keys"></span>
<span class="attr-name">title</span>
<span class="attr-type">VARCHAR(200)</span>
</div>
<div class="attribute-row">
<span class="attr-keys"></span>
<span class="attr-name">content</span>
<span class="attr-type">TEXT</span>
</div>
<div class="attribute-row">
<span class="attr-keys"></span>
<span class="attr-name">created_at</span>
<span class="attr-type">TIMESTAMP</span>
</div>
</div>
</div>
<div class="er-entity" style="left: 400px; top: 350px; width: 180px;">
<div class="entity-header">comments</div>
<div class="entity-attributes">
<div class="attribute-row">
<span class="attr-keys"><span class="key-badge pk">PK</span></span>
<span class="attr-name">id</span>
<span class="attr-type">INT</span>
</div>
<div class="attribute-row">
<span class="attr-keys"><span class="key-badge fk">FK</span></span>
<span class="attr-name">post_id</span>
<span class="attr-type">INT</span>
</div>
<div class="attribute-row">
<span class="attr-keys"><span class="key-badge fk">FK</span></span>
<span class="attr-name">user_id</span>
<span class="attr-type">INT</span>
</div>
<div class="attribute-row">
<span class="attr-keys"></span>
<span class="attr-name">content</span>
<span class="attr-type">TEXT</span>
</div>
<div class="attribute-row">
<span class="attr-keys"></span>
<span class="attr-name">created_at</span>
<span class="attr-type">TIMESTAMP</span>
</div>
</div>
</div>
</div>
</body>
</html>