diff --git a/lib/client/gnt_job.py b/lib/client/gnt_job.py
index b1fa7f69c715586ec1edf9545b47a277889305df..81f0bd1dfaeb3a691b5bbe66219269203f10e0db 100644
--- a/lib/client/gnt_job.py
+++ b/lib/client/gnt_job.py
@@ -245,6 +245,26 @@ def CancelJobs(opts, args, cl=None, _stdout_fn=ToStdout, _ask_fn=AskUser):
                          lambda cl, job_id: cl.CancelJob(job_id))
 
 
+def ChangePriority(opts, args):
+  """Change priority of jobs.
+
+  @param opts: Command line options
+  @type args: list
+  @param args: Job IDs
+  @rtype: int
+  @return: Exit code
+
+  """
+  if opts.priority is None:
+    ToStderr("--priority option must be given.")
+    return constants.EXIT_FAILURE
+
+  return _MultiJobAction(opts, args, None, None, None,
+                         "Change priority of job(s) listed above?",
+                         lambda cl, job_id:
+                           cl.ChangeJobPriority(job_id, opts.priority))
+
+
 def ShowJobs(opts, args):
   """Show detailed information about jobs.
 
@@ -494,6 +514,12 @@ commands = {
   "watch": (
     WatchJob, [ArgJobId(min=1, max=1)], [],
     "<job-id>", "Follows a job and prints its output as it arrives"),
+  "change-priority": (
+    ChangePriority, [ArgJobId()],
+    [PRIORITY_OPT, FORCE_OPT, _PENDING_OPT, _QUEUED_OPT, _WAITING_OPT],
+    "--priority <priority> {[--force] {--pending | --queued | --waiting} |"
+    " <job-id> [<job-id> ...]}",
+    "Change the priority of jobs"),
   }
 
 
diff --git a/man/gnt-job.rst b/man/gnt-job.rst
index 773d8a3754294043cd9cdcb6573751616ac8ebd4..c7a0e8a0ec70d2b64e46795fdb9ccd263c4f4c1c 100644
--- a/man/gnt-job.rst
+++ b/man/gnt-job.rst
@@ -50,6 +50,18 @@ not yet started to run can be canceled; that is, jobs in either the
 ``--queued`` and ``waiting`` can be used to cancel all jobs in the
 respective state, ``--pending`` includes both.
 
+CHANGE-PRIORITY
+~~~~~~~~~~~~~~~
+
+| **change-priority** --priority {low | normal | high}
+| {[\--force] {\--pending | \--queued | \--waiting} | *job-id* ...}
+
+Changes the priority of one or multiple pending jobs. Jobs currently
+running have only the priority of remaining opcodes changed.
+``--priority`` must be specified. ``--queued`` and ``waiting`` can be
+used to re-prioritize all jobs in the respective state, ``--pending``
+includes both. To skip a confirmation, pass ``--force``.
+
 INFO
 ~~~~