diff --git a/downloader.js b/downloader.js
index 3e1b9d3b..83e6eae8 100644
--- a/downloader.js
+++ b/downloader.js
@@ -35,7 +35,7 @@ function submitForm() {
 			document.getElementById("emptywarning").hidden = true
 			document.getElementById("dotnetwarning").hidden = false
 		} else if (error === "emptyField") {
-			console.error("Fill in all the fields")
+			console.error("Fill in all required fields")
 			document.getElementById("dotnetwarning").hidden = true
 			document.getElementById("emptywarning").hidden = false
 		}
diff --git a/index.html b/index.html
index 57022575..547627d2 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,7 @@
 <head>
 	<meta charset="UTF-8">
 	<meta content="width=device-width, initial-scale=1" name="viewport"/>
-	<link href="https://unpkg.com/@primer/css@20.4.6/dist/primer.css" rel="stylesheet"/>
+	<link href="https://unpkg.com/@primer/css@20.4.7/dist/primer.css" rel="stylesheet"/>
 	<title>SteamDepotDownloaderGUI</title>
 </head>
 <body>
@@ -33,7 +33,7 @@
 			<svg class="octicon" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg">
 				<path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"
 					  fill-rule="evenodd"></path>
-			</svg>Please fill in all fields.
+			</svg>Please fill in all required fields.
 		</div>
 	</div>
 	<div class="f0-light text-center">Steam Depot Downloader</div>
@@ -43,7 +43,7 @@
 			<div class="form-group-header">
 				<label for="username">Username</label>
 			</div>
-			<div aria-label="Enter your username here." class="form-group-body tooltipped tooltipped-n">
+			<div aria-label="Enter your username here. (leave empty for anonymous login)" class="form-group-body tooltipped tooltipped-n">
 				<input class="form-control input-block" id="username" type="text"/>
 			</div>
 		</div>
@@ -52,7 +52,7 @@
 			<div class="form-group-header">
 				<label for="password">Password</label>
 			</div>
-			<div aria-label="Enter your password here." class="form-group-body tooltipped tooltipped-n">
+			<div aria-label="Enter your password here. (leave empty for anonymous login)" class="form-group-body tooltipped tooltipped-n">
 				<input class="form-control input-block" id="password" type="password"/>
 			</div>
 		</div>
diff --git a/utils.js b/utils.js
index 81516d3a..89da4520 100644
--- a/utils.js
+++ b/utils.js
@@ -4,14 +4,12 @@
  */
 function preDownloadCheck() {
 	return new Promise((resolve, reject) => {
-		let username = document.forms["theform"]["username"].value
-		let password = document.forms["theform"]["password"].value
 		let appid = document.forms["theform"]["appid"].value
 		let depotid = document.forms["theform"]["depotid"].value
 		let manifestid = document.forms["theform"]["manifestid"].value
 
 		// Check if all fields are filled
-		if (username === "" || password === "" || appid === "" || depotid === "" || manifestid === "") {
+		if (appid === "" || depotid === "" || manifestid === "") {
 			// Reject before even checking if dotnet is installed
 			reject("emptyField")
 			return
@@ -152,23 +150,29 @@ const createCommand = () => {
 	let manifestid = document.forms["theform"]["manifestid"].value
 	let osdropdown = document.getElementById("osdropdown")
 
+	// if either the username or password fields are empty, anonymous login is used
+	let anonymous = username === "" || password === ""
+
+	// build the username and password flags into one string, allowing for anonymous login
+	let userpass = anonymous ? "" : `-username ${username} -password ${password}`
+
 	const finalPath = platformpath() + path.sep + "games" + path.sep + appid
 
 	// The final command to run, returned by this function
 	if (osdropdown.options[osdropdown.selectedIndex].text.includes("Gnome")) {
-		return `gnome-terminal -e 'bash -c "dotnet ./depotdownloader/DepotDownloader.dll -username ${username} -password ${password} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16";bash'`
+		return `gnome-terminal -e 'bash -c "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16";bash'`
 	} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Windows")) {
-		return `start cmd.exe /k dotnet ${platformpath()}${path.sep}depotdownloader${path.sep}DepotDownloader.dll -username ${username} -password ${password} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16`
+		return `start cmd.exe /k dotnet ${platformpath()}${path.sep}depotdownloader${path.sep}DepotDownloader.dll -${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16`
 	} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("macOS")) {
-		return `osascript -c 'tell application "Terminal" to do script 'dotnet ./depotdownloader/DepotDownloader.dll -username ${username} -password ${password} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16'`
+		return `osascript -c 'tell application "Terminal" to do script 'dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16'`
 	} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Konsole")) {
-		return `konsole --hold -e "dotnet ./depotdownloader/DepotDownloader.dll -username ${username} -password ${password} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16"`
+		return `konsole --hold -e "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16"`
 	} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Xfce")) {
-		return `xfce4-terminal -H -e "dotnet ./depotdownloader/DepotDownloader.dll -username ${username} -password ${password} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16"`
+		return `xfce4-terminal -H -e "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16"`
 	} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Terminator")) {
-		return `terminator -e 'bash -c "dotnet ./depotdownloader/DepotDownloader.dll -username ${username} -password ${password} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16";bash'`
+		return `terminator -e 'bash -c "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16";bash'`
 	} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Print command")) {
-		console.log(`COPY-PASTE THE FOLLOWING INTO YOUR TERMINAL OF CHOICE:\n\ndotnet ${platformpath()}/depotdownloader/DepotDownloader.dll -username ${username} -password ${password} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath} -max-servers 50 -max-downloads 16`)
+		console.log(`COPY-PASTE THE FOLLOWING INTO YOUR TERMINAL OF CHOICE:\n\ndotnet ${platformpath()}/depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath} -max-servers 50 -max-downloads 16`)
 		return "echo hello"
 	}
 }