diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index 2ba220e6408ce63a22a01f5cef1e8f75d3ff73a0..c1fc543fbadce4bb267cfb0cd077653ab8e2b571 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -99,6 +99,7 @@ $lang['searchmedia_in']        = 'Search in %s';
 $lang['txt_upload']            = 'Select file to upload';
 $lang['txt_filename']          = 'Upload as (optional)';
 $lang['txt_overwrt']           = 'Overwrite existing file';
+$lang['maxuploadsize']         = 'Upload max. %s per file.';
 $lang['lockedby']              = 'Currently locked by';
 $lang['lockexpire']            = 'Lock expires at';
 
diff --git a/inc/media.php b/inc/media.php
index 66984e957d4c14bbb2851ed1e4dfcfeae0998f38..841a5218ec4e913afee40b4f26395aa393265083 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -1602,7 +1602,35 @@ function media_uploadform($ns, $auth, $fullscreen = false){
 
     echo NL.'<div id="mediamanager__uploader">'.NL;
     html_form('upload', $form);
+
     echo '</div>'.NL;
+
+    echo '<p class="maxsize">';
+    printf($lang['maxuploadsize'],filesize_h(media_getuploadsize()));
+    echo '</p>'.NL;
+
+}
+
+/**
+ * Returns the size uploaded files may have
+ *
+ * This uses a conservative approach using the lowest number found
+ * in any of the limiting ini settings
+ *
+ * @returns int size in bytes
+ */
+function media_getuploadsize(){
+    $okay = 0;
+
+    $post = (int) php_to_byte(@ini_get('post_max_size'));
+    $suho = (int) php_to_byte(@ini_get('suhosin.post.max_value_length'));
+    $upld = (int) php_to_byte(@ini_get('upload_max_filesize'));
+
+    if($post && ($post < $okay || $okay == 0)) $okay = $post;
+    if($suho && ($suho < $okay || $okay == 0)) $okay = $suho;
+    if($upld && ($upld < $okay || $okay == 0)) $okay = $upld;
+
+    return $okay;
 }
 
 /**