# LLM course: Upload issue for certificate

**URL:** </static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fllm-course-upload-issue-for-certificate%2F172461%3E%5C
**Category:** Course\
**Created:** [January 13, 2026, 10:51pm UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fllm-course-upload-issue-for-certificate%2F172461 "2026-01-13T22:51:11Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Snaseem2026](https://avatars.discourse-cdn.com/v4/letter/s/ecd19e/32.png) [@Snaseem2026](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fu%2FSnaseem2026)%5C
**Post date:** [January 13, 2026, 10:51pm UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fllm-course-upload-issue-for-certificate%2F172461%2F1 "2026-01-13T22:51:11Z")

</div>

Hi team,  
I’m experiencing an issue when trying to upload my course completion certificate to LinkedIn. The upload keeps failing with an error.  
I believe the problem is related to a recent change in the certificate URL structure.

This only happens with LLM course

---

<div class="post-metadata">

**Author:** ![John6666](https://sea2.discourse-cdn.com/hellohellohello/user_avatar/discuss.huggingface.co/john6666/32/27664_2.png) [@John6666](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fu%2FJohn6666)%5C
**Post date:** [January 14, 2026, 5:51am UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fllm-course-upload-issue-for-certificate%2F172461%2F2 "2026-01-14T05:51:59Z")

</div>

Hmm… A minor bug of the course space…?

* * *

## What’s likely happening

You are running into a **Hugging Face certificate hosting + LinkedIn “Add to Profile” integration bug** , not a “your account” problem.

There are two separate “hops” in the Hugging Face flow:

1. **Hugging Face generates a certificate image/PDF** (locally inside the quiz Space).
2. The Space then **uploads the certificate image to a Hugging Face dataset repo** and constructs a public **credential URL** (`certUrl`).
3. The Space builds a **LinkedIn Add-to-Profile URL** (`linkedin.com/profile/add?...`) that includes `certUrl` plus metadata like issue month/year.

If **step 2 fails** (certificate cannot be uploaded or the generated URL points to the wrong place), the credential URL becomes invalid or generic, and LinkedIn may reject the flow or you end up with a wrong/empty certification record.

This exact “certificate upload failed” pattern is visible in Hugging Face course Spaces, including reports by learners. ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/discussions/3 "huggingface-course/unit\_3\_quiz · Certificate upload failed"))

* * *

## Why it only happens with the LLM course unit (common root cause)

The LLM course certificate quiz Space appears to be **duplicated from another course Space** , and it still contains **hardcoded or mismatched configuration**.

In the LLM course unit\_3 quiz Space:

- The Space is explicitly shown as **“Duplicated from mcp-course/unit\_3\_quiz”**. ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))
- Its `app.py` still defaults to pulling quiz data from **another course** unless environment variables override it:  
`EXAM_DATASET_ID = ... "agents-course/unit_1_quiz"` and `COURSE_TITLE = ... "Fundamentals of MCP"`. ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))
- The upload routine uses `repo_id="mcp-course/certificates"` (not the huggingface-course certificates dataset), which matches the suspicion posted by users (“uploading to the wrong dataset”). ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))

So your “recent change in certificate URL structure” instinct is plausible, but the more precise diagnosis is:

- **The LLM course Space is generating or uploading certificates using the wrong repo path and legacy LinkedIn parameters** , so the resulting URL/metadata doesn’t validate cleanly.

* * *

## Main causes (ranked) and what they look like

### Cause 1: The certificate upload step fails, so the credential URL is missing or wrong

The Space code uploads to a dataset repo and returns a URL like:

`https://huggingface.co/datasets/.../resolve/main/certificates/<user>/<date>.png`

In the LLM unit\_3 quiz Space code, the upload target is set to `mcp-course/certificates`. ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))  
Users have reported this exact mismatch (“uploading certificates to the wrong dataset”). ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/discussions/3 "huggingface-course/unit\_3\_quiz · Certificate upload failed"))

**Symptoms**

- You see a warning like “Certificate upload failed, but you still passed!” (this message exists in the same codebase pattern used by HF course Spaces). ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))
- The LinkedIn button still appears, but the credential URL behind it may be generic, wrong-course, or non-existent.

**Why LinkedIn then fails**  
LinkedIn’s certification entry can require a valid issue date and may validate the URL format or at least choke on malformed parameters. If the `certUrl` is broken or points somewhere unexpected, you can get an error.

* * *

### Cause 2: The LinkedIn Add-to-Profile URL is built with invalid/legacy parameters

LinkedIn’s “Add to Profile” parameter schema matters. The LinkedIn microsite documentation explicitly says:

- Use **either** `organizationId` **or** `organizationName`, not both. ([LinkedIn](https://addtoprofile.linkedin.com/ "Add to profile"))

But the HF Space builds params containing **both** :

- `"organizationName": "Hugging Face"` and `"organizationId": CERTIFYING_ORG_LINKEDIN_ID` ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))

Also, the Space uses a suspicious parameter name:

- `"organizationIdissueYear": str(current_year)` ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))

Other HF course repos have commits explicitly changing `organizationIdissueYear -> issueYear` when generating the LinkedIn button, which strongly suggests the old key was wrong in practice. ([Hugging Face](https://huggingface.co/spaces/agents-course/unit_1_quiz/commit/f4aedd5a67ceec1bdc6d44a5d1750b4b1753cc19 "issueYear when generating LinkedIn button · agents-course ..."))

**Symptoms**

- LinkedIn opens but does not populate fields correctly.
- LinkedIn shows a generic error after clicking the button.
- Issue year appears missing or LinkedIn refuses to save.

* * *

### Cause 3: LinkedIn changed how Add-to-Profile works (no more autofill)

LinkedIn explicitly states they changed Add-to-Profile:

- It **no longer autofills** certification/degree information.
- Providers should use a **static URL** , and users must enter details manually. ([LinkedIn](https://www.linkedin.com/help/linkedin/answer/a528030 "Create LinkedIn Add to Profile button for certification or degree providers FAQs | LinkedIn Help"))

This change can make HF’s button feel “broken” even when it technically works, because the old expectation was prefilled fields.

**Important nuance**  
This change usually causes “no autofill,” not “upload fails.” But it increases confusion and makes parameter bugs more visible.

* * *

### Cause 4: You are “uploading” the PDF/image to LinkedIn (Featured/Media) and LinkedIn rejects the file

If by “upload” you mean attaching the certificate PDF/image as a file on LinkedIn:

- LinkedIn can fail on file size, browser issues, adblockers, or transient upload bugs.

But your “only LLM course” detail strongly points back to the **LLM certificate hosting/link** being the differentiator, not LinkedIn file upload limits.

* * *

## Solutions and workarounds (what actually works)

### Workaround A (most reliable): Add it manually on LinkedIn, ignore the Add-to-Profile button

LinkedIn fully supports manual entry in **Licenses & certifications**. ([LinkedIn](https://www.linkedin.com/help/linkedin/answer/a567169 "Manage Licenses & certifications | LinkedIn Help"))

**What to do**

1. Go to your LinkedIn profile.

2. Add profile section → Recommended → **Add licenses & certifications**. ([LinkedIn](https://www.linkedin.com/help/linkedin/answer/a567169 "Manage Licenses & certifications | LinkedIn Help"))

3. Fill in:

4. Save.

This bypasses all the fragile URL query-string behavior.

* * *

### Workaround B: Use a stable credential URL that is definitely public

If the HF Space upload is failing, you still can make a credential URL:

Options:

- Host the certificate image/PDF on a public page you control (GitHub repo release asset, personal site, public Google Drive link set to “Anyone with link,” etc).
- Or upload the image to a public Hugging Face repo you own and use a `resolve/main/...` link.

Then paste that URL into LinkedIn as the Credential URL.

Why this works: LinkedIn mainly needs a stable reference URL. You do not need LinkedIn autofill at all. LinkedIn’s own guidance emphasizes manual entry now. ([LinkedIn](https://www.linkedin.com/help/linkedin/answer/a528030 "Create LinkedIn Add to Profile button for certification or degree providers FAQs | LinkedIn Help"))

* * *

### Workaround C: Fix the LinkedIn URL yourself (quick test)

If you want to keep using the HF “Add to Profile” button, do a controlled experiment:

1. Click the HF button.

2. Copy the resulting LinkedIn URL from your browser address bar.

3. Edit it so it follows LinkedIn’s current parameter expectations:

If your edited URL works, you’ve proven the issue is **bad parameters** , not your LinkedIn account.

* * *

### Workaround D: Report it where HF actually tracks it

HF course pages explicitly direct users to open a discussion if the quiz/cert has issues. ([Hugging Face](https://huggingface.co/learn/llm-course/en/chapter3/7 "End-of-chapter Certificate - Hugging Face LLM Course"))  
The LLM unit\_3 quiz Space already has relevant threads like “Certificate upload failed.” ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/discussions/3 "huggingface-course/unit\_3\_quiz · Certificate upload failed"))

When reporting, include:

- The LinkedIn error text
- Whether you saw “Certificate upload failed…”
- The `certUrl` you got (redact your username if you want)
- A note that `repo_id="mcp-course/certificates"` and `organizationIdissueYear` appear in the Space code ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))

This is the kind of bug HF staff can fix quickly because it’s configuration/code in the Space.

* * *

## How to isolate the issue (tight debugging checklist)

### Step 1: Identify where the failure occurs

**A. Failure happens on Hugging Face page**

- You see “Uploading your certificate…” then a warning/failure.
- That is a Hugging Face upload-to-dataset failure (step 2). ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))

**B. Failure happens on LinkedIn**

- HF shows the button fine.
- LinkedIn opens, then errors on save or shows a red banner.

Different root causes. Don’t mix them.

* * *

### Step 2: Validate the credential URL (`certUrl`) independently

If you can extract the `certUrl` value from the LinkedIn link:

1. Paste `certUrl` into a new incognito window.
2. Confirm it loads without login.
3. Confirm it is the expected certificate image.

If it 404s or redirects oddly, LinkedIn will be unreliable.

Given the Space’s upload target mismatch (`repo_id="mcp-course/certificates"`), a broken `certUrl` is very plausible. ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))

* * *

### Step 3: Check for parameter violations in the LinkedIn URL

Compare your LinkedIn URL against LinkedIn’s own rules:

- Are both `organizationId` and `organizationName` present? That’s explicitly disallowed. ([LinkedIn](https://addtoprofile.linkedin.com/ "Add to profile"))
- Do you have a normal `issueYear` field, or something odd like `organizationIdissueYear`? The Space code uses the odd key. ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))
- Is your issue date missing? LinkedIn commonly expects it.

If you find these mismatches, you’ve isolated the problem to URL construction.

* * *

### Step 4: Cross-check with LinkedIn’s current behavior expectations

Even if everything is “correct,” you should not expect autofill anymore. LinkedIn confirms the Add-to-Profile flow no longer autofills and uses a static URL approach. ([LinkedIn](https://www.linkedin.com/help/linkedin/answer/a528030 "Create LinkedIn Add to Profile button for certification or degree providers FAQs | LinkedIn Help"))

So the correct “passing condition” is:

- The button opens LinkedIn’s form.
- You can manually enter details and save.

* * *

### Step 5: Test the same flow with a clean Add-to-Profile URL

Use LinkedIn’s own Add-to-Profile microsite as a reference. It documents the expected fields and formats. ([LinkedIn](https://addtoprofile.linkedin.com/ "Add to profile"))

If a microsite-generated link works but the HF-generated link fails, the culprit is confirmed: HF link generation.

* * *

## If I were in your case, what I would do (practical sequence)

1. **Stop trying to “make the button work” first.** I would get the credential onto my profile via manual entry so the outcome is achieved today. LinkedIn supports manual Licenses & certifications entry directly. ([LinkedIn](https://www.linkedin.com/help/linkedin/answer/a567169 "Manage Licenses & certifications | LinkedIn Help"))

2. I would **host the certificate at a stable public URL** I control (or at least can guarantee is public), and paste that into LinkedIn as the credential URL.

3. Then I would do the isolation steps:

4. Finally, I would **post a minimal reproducible bug report** in the HF Space discussion:

That sequence gives you both:

- A working LinkedIn profile entry now.
- A clean technical report that can lead to a real fix.

* * *

## High-quality references (worth reading / using)

### LinkedIn official docs

- LinkedIn Add-to-Profile provider FAQ (explains the “no more autofill” change and static URL behavior): [https://www.linkedin.com/help/linkedin/answer/a528030](https://www.linkedin.com/help/linkedin/answer/a528030) ([LinkedIn](https://www.linkedin.com/help/linkedin/answer/a528030 "Create LinkedIn Add to Profile button for certification or degree providers FAQs | LinkedIn Help"))
- LinkedIn: Manage Licenses & certifications (manual-add steps): [https://www.linkedin.com/help/linkedin/answer/a567169](https://www.linkedin.com/help/linkedin/answer/a567169) ([LinkedIn](https://www.linkedin.com/help/linkedin/answer/a567169 "Manage Licenses & certifications | LinkedIn Help"))
- LinkedIn Add-to-Profile microsite (parameter expectations, orgId vs orgName rule): [https://addtoprofile.linkedin.com/](https://addtoprofile.linkedin.com/) ([LinkedIn](https://addtoprofile.linkedin.com/ "Add to profile"))

### Hugging Face course-specific evidence

- LLM course “End-of-chapter Certificate” page (points to the quiz/cert flow): [https://huggingface.co/learn/llm-course/en/chapter3/7](https://huggingface.co/learn/llm-course/en/chapter3/7) ([Hugging Face](https://huggingface.co/learn/llm-course/en/chapter3/7 "End-of-chapter Certificate - Hugging Face LLM Course"))
- LLM unit\_3 quiz Space `app.py` (shows `repo_id="mcp-course/certificates"` and `organizationIdissueYear` and orgName+orgId together): [https://huggingface.co/spaces/huggingface-course/unit\_3\_quiz/blob/main/app.py](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py) ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))
- HF Space discussion: “Certificate upload failed” (user reports wrong dataset upload target): [https://huggingface.co/spaces/huggingface-course/unit\_3\_quiz/discussions/3](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/discussions/3) ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/discussions/3 "huggingface-course/unit\_3\_quiz · Certificate upload failed"))
- Similar HF pattern where users saw wrong course in LinkedIn add flow: [https://huggingface.co/spaces/huggingface-course/chapter\_1\_exam/discussions/12](https://huggingface.co/spaces/huggingface-course/chapter_1_exam/discussions/12) ([Hugging Face](https://huggingface.co/spaces/huggingface-course/chapter_1_exam/discussions/12 "huggingface-course/chapter\_1\_exam · Error Uploading Certificate"))

### Evidence that `organizationIdissueYear` was a real bug in other HF courses

- HF commit explicitly changing `organizationIdissueYear -> issueYear` (shows this is a known integration pitfall): ([Hugging Face](https://huggingface.co/spaces/agents-course/unit_1_quiz/commit/f4aedd5a67ceec1bdc6d44a5d1750b4b1753cc19 "issueYear when generating LinkedIn button · agents-course ..."))

* * *

## Short summary

- The LLM certificate Space likely has **miswired upload target and legacy LinkedIn parameters** , so LinkedIn fails or the credential URL is wrong. ([Hugging Face](https://huggingface.co/spaces/huggingface-course/unit_3_quiz/blob/main/app.py "app.py · huggingface-course/unit\_3\_quiz at main"))
- LinkedIn also changed Add-to-Profile so **autofill no longer happens** , which increases confusion. ([LinkedIn](https://www.linkedin.com/help/linkedin/answer/a528030 "Create LinkedIn Add to Profile button for certification or degree providers FAQs | LinkedIn Help"))
- Fastest fix: **add the certification manually** on LinkedIn and use a **stable public credential URL**. ([LinkedIn](https://www.linkedin.com/help/linkedin/answer/a567169 "Manage Licenses & certifications | LinkedIn Help"))
- Isolation: test `certUrl` in incognito, then verify the LinkedIn URL does not violate `organizationId` vs `organizationName` and uses a valid issue year field. ([LinkedIn](https://addtoprofile.linkedin.com/ "Add to profile"))

---

<div class="post-metadata">

**Author:** ![Snaseem2026](https://avatars.discourse-cdn.com/v4/letter/s/ecd19e/32.png) [@Snaseem2026](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fu%2FSnaseem2026)%5C
**Post date:** [January 14, 2026, 6:27am UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fllm-course-upload-issue-for-certificate%2F172461%2F3 "2026-01-14T06:27:26Z")

</div>

Thanks I will try one of these then 👍

---

<div class="post-metadata">

**Author:** ![Amber14L](https://sea2.discourse-cdn.com/hellohellohello/user_avatar/discuss.huggingface.co/amber14l/32/50832_2.png) [@Amber14L](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fu%2FAmber14L)%5C
**Post date:** [January 14, 2026, 9:56am UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fllm-course-upload-issue-for-certificate%2F172461%2F4 "2026-01-14T09:56:26Z")

</div>

I noticed this too — the LLM course certificates changed URL structure recently, and LinkedIn’s upload tool doesn’t parse it correctly. A workaround that sometimes works is to download the certificate locally as a PDF and upload it manually rather than using the direct URL. Also, when you submit a ticket to LinkedIn, include both the old and new URL formats if possible; it helps them pinpoint the issue faster.

---

<div class="post-metadata">

**Author:** ![John6666](https://sea2.discourse-cdn.com/hellohellohello/user_avatar/discuss.huggingface.co/john6666/32/27664_2.png) [@John6666](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fu%2FJohn6666)%5C
**Post date:** [January 14, 2026, 10:07pm UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fllm-course-upload-issue-for-certificate%2F172461%2F5 "2026-01-14T22:07:08Z")

</div>

@burtenshaw just in case

---

<div class="post-metadata">

**Author:** ![kathrinfa](https://avatars.discourse-cdn.com/v4/letter/k/8491ac/32.png) [@kathrinfa](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fu%2Fkathrinfa)%5C
**Post date:** [January 20, 2026, 10:35am UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fllm-course-upload-issue-for-certificate%2F172461%2F6 "2026-01-20T10:35:08Z")

</div>

Yes I also face this
