diff --git a/server.py b/server.py
index b3facfa046e93e1f117eacf646fe4f5cb4479dbf..eeb3fdb8ee0d6796cf4e23d57631002f56b8778e 100755
--- a/server.py
+++ b/server.py
@@ -24,7 +24,7 @@ from shared import db, date_filter, datetime_filter, date_filter_long, date_filt
 from utils import is_past, mail_manager, url_manager, get_first_unused_int, set_etherpad_text, get_etherpad_text, split_terms, optional_int_arg, fancy_join
 from decorators import db_lookup, require_public_view_right, require_private_view_right, require_modify_right, require_admin_right
 from models.database import ProtocolType, Protocol, DefaultTOP, TOP, LocalTOP, Document, Todo, Decision, MeetingReminder, Error, TodoMail, DecisionDocument, TodoState, Meta, DefaultMeta, DecisionCategory, Like
-from views.forms import LoginForm, ProtocolTypeForm, DefaultTopForm, MeetingReminderForm, NewProtocolForm, DocumentUploadForm, KnownProtocolSourceUploadForm, NewProtocolSourceUploadForm, generate_protocol_form, TopForm, LocalTopForm, SearchForm, DecisionSearchForm, ProtocolSearchForm, TodoSearchForm, NewProtocolFileUploadForm, NewTodoForm, TodoForm, TodoMailForm, DefaultMetaForm, MetaForm, MergeTodosForm, DecisionCategoryForm
+from views.forms import LoginForm, ProtocolTypeForm, DefaultTopForm, MeetingReminderForm, NewProtocolForm, DocumentUploadForm, KnownProtocolSourceUploadForm, NewProtocolSourceUploadForm, generate_protocol_form, TopForm, LocalTopForm, SearchForm, DecisionSearchForm, ProtocolSearchForm, TodoSearchForm, NewProtocolFileUploadForm, NewTodoForm, TodoForm, TodoMailForm, DefaultMetaForm, MetaForm, MergeTodosForm, DecisionCategoryForm, DocumentEditForm
 from views.tables import ProtocolsTable, ProtocolTypesTable, ProtocolTypeTable, DefaultTOPsTable, MeetingRemindersTable, ErrorsTable, TodosTable, DocumentsTable, DecisionsTable, TodoTable, ErrorTable, TodoMailsTable, DefaultMetasTable, DecisionCategoriesTable
 from legacy import import_old_todos, import_old_protocols, import_old_todomails
 
@@ -1092,6 +1092,18 @@ def upload_document(protocol):
         db.session.commit()
     return redirect(request.args.get("next") or url_for("show_protocol", protocol_id=protocol.id))
 
+@app.route("/document/edit/<int:document_id>", methods=["GET", "POST"])
+@login_required
+@db_lookup(Document)
+@require_modify_right()
+def edit_document(document):
+    form = DocumentEditForm(obj=document)
+    if form.validate_on_submit():
+        form.populate_obj(document)
+        db.session.commit()
+        return redirect(request.args.get("next") or url_for("show_protocol", protocol_id=document.protocol.id))
+    return render_template("document-edit.html", document=document, form=form)
+
 @app.route("/document/delete/<int:document_id>")
 @login_required
 @group_required(config.ADMIN_GROUP)
diff --git a/templates/document-edit.html b/templates/document-edit.html
new file mode 100644
index 0000000000000000000000000000000000000000..7b1689e7170c53d394d95f91b16606b46ae75d13
--- /dev/null
+++ b/templates/document-edit.html
@@ -0,0 +1,9 @@
+{% extends "layout.html" %}
+{% from "macros.html" import render_form %}
+{% block title %}Dokument bearbeiten{% endblock %}
+
+{% block content %}
+<div class="container">
+    {{render_form(form, action_url=url_for("edit_document", document_id=document.id, next=request.args.get("next") or url_for("show_protocol", protocol_id=document.protocol.id)), action_text="Ändern")}}
+</div>
+{% endblock %}
diff --git a/views/forms.py b/views/forms.py
index 1c20ba508d00ed873188373bf0936895bc3fb475..0fd10eef0cdd75fec210d525ae39f2c4ac27754a 100644
--- a/views/forms.py
+++ b/views/forms.py
@@ -153,6 +153,10 @@ class NewProtocolForm(FlaskForm):
         super().__init__(**kwargs)
         self.protocoltype_id.choices = get_protocoltype_choices(protocoltypes, add_all=False)
 
+class DocumentEditForm(FlaskForm):
+    name = StringField("Dateiname")
+    is_private = BooleanField("Intern")
+
 class DocumentUploadForm(FlaskForm):
     document = FileField("Datei")
     is_private = BooleanField("Intern")
diff --git a/views/tables.py b/views/tables.py
index c5682f24f59fa5ba1bdef81efcf961a817ec8cdb..02b71d99affa020aa9994ebb5bcf2c727dffda18 100644
--- a/views/tables.py
+++ b/views/tables.py
@@ -439,6 +439,8 @@ class DocumentsTable(Table):
     def row(self, document):
         user = current_user()
         links = []
+        if document.protocol.has_modify_right(user):
+            links.append(Table.link(url_for("edit_document", document_id=document.id), "Bearbeiten"))
         if config.PRINTING_ACTIVE and document.protocol.has_modify_right(user):
             links.append(Table.link(url_for("print_document", document_id=document.id), "Drucken"))
         if document.protocol.protocoltype.has_admin_right(user):