midnight

By refact0r Version 2.1.1 Updated 06/04/2026 418.3K downloads

a dark, customizable discord theme.

flat dark customizable black

Live preview

Full Discord interface with this theme applied โ€” powered by ThemePreview.

Screenshot

midnight screenshot
midnight.theme.css
GitHub

Open source

https://raw.githubusercontent.com/refact0r/midnight-discord/0c6e4b5009df5f13fe33d9b279378378d5212330/themes/midnight.theme.css
1/**
2 * @name midnight
3 * @description a dark, customizable discord theme.
4 * @author refact0r
5 * @version 2.1.1
6 * @invite nz87hXyvcy
7 * @website https://github.com/refact0r/midnight-discord
8 * @source https://github.com/refact0r/midnight-discord/blob/master/themes/midnight.theme.css
9 * @authorId 508863359777505290
10 * @authorLink https://www.refact0r.dev
11*/
12
13/* import theme modules */
14@import url('https://refact0r.github.io/midnight-discord/build/midnight.css');
15
16body {
17 /* font options */
18 --font: 'figtree'; /* change to '' for default discord font */
19 --code-font: ''; /* change to '' for default discord font */
20 font-weight: 400; /* normal text font weight. DOES NOT AFFECT BOLD TEXT */
21
22 /* sizes */
23 --gap: 12px; /* spacing between panels */
24 --divider-thickness: 4px; /* thickness of unread messages divider and highlighted message borders */
25 --border-thickness: 1px; /* thickness of borders around main panels. DOES NOT AFFECT OTHER BORDERS */
26
27 /* animation/transition options */
28 --animations: on; /* off: disable animations/transitions, on: enable animations/transitions */
29 --list-item-transition: 0.2s ease; /* transition for list items */
30 --dms-icon-svg-transition: 0.4s ease; /* transition for the dms icon */
31 --border-hover-transition: 0.2s ease; /* transition for borders when hovered */
32
33 /* top bar options */
34 --top-bar-height: var(--gap); /* height of the top bar (discord default is 36px, old discord style is 24px, var(--gap) recommended if button position is set to titlebar) */
35 --top-bar-button-position: titlebar; /* off: default position, hide: hide buttons completely, serverlist: move inbox button to server list, titlebar: move inbox button to channel titlebar (will hide title) */
36 --top-bar-title-position: off; /* off: default centered position, hide: hide title completely, left: left align title (like old discord) */
37 --subtle-top-bar-title: off; /* off: default, on: hide the icon and use subtle text color (like old discord) */
38
39 /* window controls */
40 --custom-window-controls: on; /* off: default window controls, on: custom window controls */
41 --window-control-size: 14px; /* size of custom window controls */
42
43 /* dms button options */
44 --custom-dms-icon: custom; /* off: use default discord icon, hide: remove icon entirely, custom: use custom icon */
45 --dms-icon-svg-url: url('https://refact0r.github.io/midnight-discord/assets/Font_Awesome_5_solid_moon.svg'); /* icon svg url. MUST BE A SVG. */
46 --dms-icon-svg-size: 90%; /* size of the svg (css mask-size property) */
47 --dms-icon-color-before: var(--icon-subtle); /* normal icon color */
48 --dms-icon-color-after: var(--white); /* icon color when button is hovered/selected */
49 --custom-dms-background: off; /* off to disable, image to use a background image (must set url variable below), color to use a custom color/gradient */
50 --dms-background-image-url: url(''); /* url of the background image */
51 --dms-background-image-size: cover; /* size of the background image (css background-size property) */
52 --dms-background-color: linear-gradient(70deg, var(--blue-2), var(--purple-2), var(--red-2)); /* fixed color/gradient (css background property) */
53
54 /* background image options */
55 --background-image: off; /* off: no background image, on: enable background image (must set url variable below) */
56 --background-image-url: url(''); /* url of the background image */
57
58 /* transparency/blur options */
59 /* NOTE: TO USE TRANSPARENCY/BLUR, YOU MUST HAVE TRANSPARENT BG COLORS. FOR EXAMPLE: --bg-4: hsla(220, 15%, 10%, 0.7); */
60 --transparency-tweaks: off; /* off: no changes, on: remove some elements for better transparency */
61 --remove-bg-layer: off; /* off: no changes, on: remove the base --bg-3 layer for use with window transparency (WILL OVERRIDE BACKGROUND IMAGE) */
62 --panel-blur: off; /* off: no changes, on: blur the background of panels */
63 --blur-amount: 12px; /* amount of blur */
64 --bg-floating: var(--bg-3); /* set this to a more opaque color if floating panels look too transparent. only applies if panel blur is on */
65
66 /* chatbar options */
67 --custom-chatbar: off; /* off: default chatbar, separated: chatbar separated from chat */
68 --chatbar-height: 47px; /* height of the chatbar (56px by default, 47px to align with user panel, 56px recommended for separated) */
69
70 /* other options */
71 --small-user-panel: on; /* off: default user panel, on: smaller user panel like in old discord */
72}
73
74/* color options */
75:root {
76 --colors: on; /* off: discord default colors, on: midnight custom colors */
77
78 /* text colors */
79 --text-0: var(--bg-4); /* text on colored elements */
80 --text-1: hsl(220, 45%, 95%); /* other normally white text */
81 --text-2: hsl(220, 25%, 70%); /* headings and important text */
82 --text-3: hsl(220, 20%, 60%); /* normal text */
83 --text-4: hsl(220, 15%, 40%); /* icon buttons and channels */
84 --text-5: hsl(220, 15%, 25%); /* muted channels/chats and timestamps */
85
86 /* background and dark colors */
87 --bg-1: hsla(220, 15%, 20%, 1); /* dark buttons when clicked */
88 --bg-2: hsla(220, 15%, 16%, 1); /* dark buttons */
89 --bg-3: hsla(220, 15%, 13%, 1); /* spacing, secondary elements */
90 --bg-4: hsla(220, 15%, 10%, 1); /* main background color */
91 --hover: hsla(221, 19%, 40%, 0.1); /* channels and buttons when hovered */
92 --active: hsla(220, 19%, 40%, 0.2); /* channels and buttons when clicked or selected */
93 --active-2: hsla(220, 19%, 40%, 0.3); /* extra state for transparent buttons */
94 --message-hover: hsla(220, 0%, 0%, 0.1); /* messages when hovered */
95
96 /* accent colors */
97 --accent-1: var(--blue-1); /* links and other accent text */
98 --accent-2: var(--blue-2); /* small accent elements */
99 --accent-3: var(--blue-3); /* accent buttons */
100 --accent-4: var(--blue-4); /* accent buttons when hovered */
101 --accent-5: var(--blue-5); /* accent buttons when clicked */
102 --accent-new: var(--accent-2); /* stuff that's normally red like mute/deafen buttons */
103 --mention: linear-gradient(to right, color-mix(in hsl, var(--accent-2), transparent 90%) 40%, transparent); /* background of messages that mention you */
104 --mention-hover: linear-gradient(to right, color-mix(in hsl, var(--accent-2), transparent 95%) 40%, transparent); /* background of messages that mention you when hovered */
105 --reply: linear-gradient(to right, color-mix(in hsl, var(--text-3), transparent 90%) 40%, transparent); /* background of messages that reply to you */
106 --reply-hover: linear-gradient(to right, color-mix(in hsl, var(--text-3), transparent 95%) 40%, transparent); /* background of messages that reply to you when hovered */
107
108 /* status indicator colors */
109 --online: var(--green-2); /* change to #40a258 for default */
110 --dnd: var(--red-2); /* change to #d83a41 for default */
111 --idle: var(--yellow-2); /* change to #cc954c for default */
112 --streaming: var(--purple-2); /* change to ##9147ff for default */
113 --offline: var(--text-4); /* change to #82838b for default offline color */
114
115 /* border colors */
116 --border-light: var(--hover); /* general light border color */
117 --border: var(--active); /* general normal border color */
118 --border-hover: var(--active); /* border color of panels when hovered */
119 --button-border: hsl(220, 0%, 100%, 0.1); /* neutral border color of buttons */
120
121 /* base colors */
122 --red-1: oklch(75% 0.12 0);
123 --red-2: oklch(70% 0.12 0);
124 --red-3: oklch(65% 0.12 0);
125 --red-4: oklch(60% 0.12 0);
126 --red-5: oklch(55% 0.12 0);
127
128 --green-1: oklch(75% 0.11 170);
129 --green-2: oklch(70% 0.11 170);
130 --green-3: oklch(65% 0.11 170);
131 --green-4: oklch(60% 0.11 170);
132 --green-5: oklch(55% 0.11 160);
133
134 --blue-1: oklch(75% 0.1 215);
135 --blue-2: oklch(70% 0.1 215);
136 --blue-3: oklch(65% 0.1 215);
137 --blue-4: oklch(60% 0.1 215);
138 --blue-5: oklch(55% 0.1 215);
139
140 --yellow-1: oklch(80% 0.11 90);
141 --yellow-2: oklch(75% 0.11 90);
142 --yellow-3: oklch(70% 0.11 90);
143 --yellow-4: oklch(65% 0.11 90);
144 --yellow-5: oklch(60% 0.11 90);
145
146 --purple-1: oklch(75% 0.11 310);
147 --purple-2: oklch(70% 0.11 310);
148 --purple-3: oklch(65% 0.11 310);
149 --purple-4: oklch(60% 0.11 310);
150 --purple-5: oklch(55% 0.11 310);
151}
152