diff --git a/src/wp-includes/media-template.php b/src/wp-includes/media-template.php
index 5418a0a..baa8847 100644
--- a/src/wp-includes/media-template.php
+++ b/src/wp-includes/media-template.php
@@ -156,7 +156,7 @@ function wp_print_media_templates() {
 		<# } #>
 		<?php if ( ! _device_can_upload() ) : ?>
 			<h3 class="upload-instructions"><?php printf( __('The web browser on your device cannot be used to upload files. You may be able to use the <a href="%s">native app for your device</a> instead.'), 'https://wordpress.org/mobile/' ); ?></h3>
-		<?php elseif ( is_multisite() && ! is_upload_space_available() ) : ?>
+		<?php elseif ( ! is_upload_space_available() ) : ?>
 			<h3 class="upload-instructions"><?php _e( 'Upload Limit Exceeded' ); ?></h3>
 			<?php
 			/** This action is documented in wp-admin/includes/media.php */
diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php
index 135ee95..b814a6e 100644
--- a/src/wp-includes/media.php
+++ b/src/wp-includes/media.php
@@ -2492,7 +2492,7 @@ function wp_plupload_default_settings() {
 			'mobile'    => wp_is_mobile(),
 			'supported' => _device_can_upload(),
 		),
-		'limitExceeded' => is_multisite() && ! is_upload_space_available()
+		'limitExceeded' => ! is_upload_space_available()
 	);
 
 	$script = 'var _wpPluploadSettings = ' . json_encode( $settings ) . ';';
@@ -3137,3 +3137,41 @@ function wp_maybe_generate_attachment_metadata( $attachment ) {
 		}
 	}
 }
+
+/**
+ * Determines if there is any upload space left in the blog's quota.
+ *
+ * @since 3.0.0
+ *
+ * @return int of upload space available in bytes
+ */
+function get_upload_space_available() {
+	// The default for single-site: astronomically high.
+	$space_available = 1024 * 1024 * 1024;
+	if ( is_multisite() ) {
+		$space_allowed = get_space_allowed() * 1024 * 1024;
+		if ( get_site_option( 'upload_space_check_disabled' ) )
+			return $space_allowed;
+
+		$space_used = get_space_used() * 1024 * 1024;
+
+		if ( ( $space_allowed - $space_used ) <= 0 )
+			return 0;
+
+		$space_available = $space_allowed - $space_used;
+	}
+	return apply_filters( 'upload_space_available', $space_available );
+}
+
+/**
+ * Determines if there is any upload space left in the current blog's quota.
+ *
+ * @since 3.0.0
+ * @return bool True if space is available, false otherwise.
+ */
+function is_upload_space_available() {
+	if ( get_site_option( 'upload_space_check_disabled' ) )
+		return true;
+
+	return (bool) get_upload_space_available();
+}
\ No newline at end of file
diff --git a/src/wp-includes/ms-functions.php b/src/wp-includes/ms-functions.php
index 431ba07..129f983 100644
--- a/src/wp-includes/ms-functions.php
+++ b/src/wp-includes/ms-functions.php
@@ -2323,39 +2323,6 @@ function get_space_allowed() {
 }
 
 /**
- * Determines if there is any upload space left in the current blog's quota.
- *
- * @since 3.0.0
- *
- * @return int of upload space available in bytes
- */
-function get_upload_space_available() {
-	$space_allowed = get_space_allowed() * 1024 * 1024;
-	if ( get_site_option( 'upload_space_check_disabled' ) )
-		return $space_allowed;
-
-	$space_used = get_space_used() * 1024 * 1024;
-
-	if ( ( $space_allowed - $space_used ) <= 0 )
-		return 0;
-
-	return $space_allowed - $space_used;
-}
-
-/**
- * Determines if there is any upload space left in the current blog's quota.
- *
- * @since 3.0.0
- * @return bool True if space is available, false otherwise.
- */
-function is_upload_space_available() {
-	if ( get_site_option( 'upload_space_check_disabled' ) )
-		return true;
-
-	return (bool) get_upload_space_available();
-}
-
-/**
  * @since 3.0.0
  *
  * @return int of upload size limit in bytes
