diff --git a/src/core/forms/__init__.py b/src/core/forms/__init__.py
index f7d33eb1b1124c803a3855000949e2b10ce1f342..caa5a9cce5f49b9c4dd780969154baa704c55c0f 100644
--- a/src/core/forms/__init__.py
+++ b/src/core/forms/__init__.py
@@ -3,6 +3,7 @@ from core.forms.conferences import ConferencePublicationForm, ConferenceRegistra
 from core.forms.invitations import InvitationHabitatForm
 from core.forms.links import LinkForm, LinkFormSet
 from core.forms.projects import ProjectForm
+from core.forms.teams import TeamForm
 
 __all__ = [
     'ConferencePublicationForm',
@@ -14,4 +15,5 @@ __all__ = [
     'PasswordResetForm',
     'ProjectForm',
     'RegistrationForm',
+    'TeamForm',
 ]
diff --git a/src/core/forms/teams.py b/src/core/forms/teams.py
new file mode 100644
index 0000000000000000000000000000000000000000..e1f91be9ee1bb9352402e47035ff3b2fb6127059
--- /dev/null
+++ b/src/core/forms/teams.py
@@ -0,0 +1,32 @@
+from django.forms import ModelForm
+from django.utils.translation import gettext_lazy as _
+
+from core.models import Team
+
+
+class TeamForm(ModelForm):
+    class Meta:
+        model = Team
+        fields = [
+            'name',
+            'description_en',
+            'description_de',
+            'require_staff',
+        ]
+        help_texts = {
+            'name': _('Team__name__help'),
+        }
+
+    def __init__(self, *args, instance: Team | None = None, conference, super_user: bool = False, **kwargs):
+        self.create = instance is None
+        self.conference = conference
+        super().__init__(*args, instance=instance, **kwargs)
+        if not super_user:
+            del self.fields['require_staff']
+
+    def save(self, commit: bool = True) -> Team:
+        team = super().save(commit=False)
+        team.conference = self.conference
+        if commit:  # pragma: no branch
+            team.save()
+        return team
diff --git a/src/core/locale/de/LC_MESSAGES/django.po b/src/core/locale/de/LC_MESSAGES/django.po
index 870d86a831ee091e6698274138985c13bf04b322..3dd78c958a5d1088bec7da309062be8413d988c2 100644
--- a/src/core/locale/de/LC_MESSAGES/django.po
+++ b/src/core/locale/de/LC_MESSAGES/django.po
@@ -167,6 +167,9 @@ msgstr "Der Besitzer eines Projekts kann nicht geändert werden!"
 msgid "Project__conference__unchangeable"
 msgstr "Die Konferenz eines Projekts kann nicht geändert werden!"
 
+msgid "Team__name__help"
+msgstr "Der Name des Teams"
+
 msgid "Request failed"
 msgstr "Anfrage fehlgeschlagen"
 
diff --git a/src/core/locale/en/LC_MESSAGES/django.po b/src/core/locale/en/LC_MESSAGES/django.po
index e720fec65ffe5f9657ee463fecb45684488fcee2..be9a7184079e6f13a513170f47e9b0974b159a7c 100644
--- a/src/core/locale/en/LC_MESSAGES/django.po
+++ b/src/core/locale/en/LC_MESSAGES/django.po
@@ -167,6 +167,9 @@ msgstr "The owner of a project cannot be changed!"
 msgid "Project__conference__unchangeable"
 msgstr "The conference of a project cannot be changed!"
 
+msgid "Team__name__help"
+msgstr "name of the team"
+
 msgid "Request failed"
 msgstr "Request failed"